【问题标题】:How can I rewrite URLs in XML with Apache 2.4?如何使用 Apache 2.4 重写 XML 中的 URL?
【发布时间】:2012-08-10 23:50:29
【问题描述】:

Apache 2.4 包含mod_proxy_html,这很棒,它可以捕获从服务器返回的 HTML 中的各种 URL 并修复它们。但是我有一个 Seam 应用程序,它有时会将文本/xml 文件发送回客户端,其中包含完全限定的 URL,这些 URL 也需要重写,而 mod_proxy_html 不能修复它们。

显然有一个 mod_proxy_xml 曾经与 mod_proxy_html 分开存在,但 Apache 没有包含它。有没有办法让 mod_proxy_html 配置为做同样的事情?我需要它来修复从服务器返回的 HTML 和 XML 文件中的 URL。

跟进:

我继续与此作斗争,我尝试了一些不同的解决方案但没有成功,包括使用 mod_substitute(不知何故我配置不正确,因为它似乎从来没有用任何东西代替任何东西)和使用强制标志 mod_proxy_html 必须尝试强制它执行某个路径下的所有文件。

【问题讨论】:

  • 构建 mod_proxy_xml 不是一种选择吗?
  • @JonLin 并非完全不可能,但这对我来说将是最后的选择。我没有任何需要的工具,我们使用的 Apache 来自一个使用 Microsoft Visual C++ 构建其余工具的站点。
  • 使用mod_sed怎么样?它可能比使用 proxy_html 更难看。

标签: apache mod-proxy mod-proxy-html


【解决方案1】:

这是一个老问题,但我刚刚遇到了同样的问题。 我尝试使用 mod_proxy_html,编译 mod_proxy_xml,没有任何效果。

@JonLin 的建议是正确的,它适用于 mod_sed。 唯一的 if 是 mod_sed 被记录在目录节点内工作。 如果您声明一个 Location 并执行 SetOutputFilter 而不是 AddOutputFilter (需要 mime 类型),它会很好地工作。

有效的配置是:

<Location "/">
    SetOutputFilter Sed
    OutputSed "s,http://internal:80,https://external.com,g"
</Location>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 2016-03-25
    • 2017-05-07
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多