如何在Apache 2.4中使用XML重写URL?

3
Apache 2.4包括mod_proxy_html,这很棒,它可以捕获从服务器返回的HTML中的各种URL并修复它们。但我有一个Seam应用程序,有时会向客户端发送带有完全限定URL的text/xml文件,这些URL也需要重写,而mod_proxy_html无法解决它们。
显然,曾经有一个mod_proxy_xml与mod_proxy_html分开存在,但Apache没有包含它。是否有一种方法可以配置mod_proxy_html以执行相同的操作?我需要它来修复从服务器返回的HTML和XML文件中的URL。
跟进:
我继续与此作斗争,并尝试了几种不同的解决方案,但都没有成功,包括使用mod_substitute(由于某种原因我配置不正确,因为它似乎从未替换任何内容)和使用force标志mod_proxy_html尝试强制执行某个路径下的所有文件。

构建mod_proxy_xml不是一个选项吗? - Jon Lin
@JonLin 这不完全是不可能的选择,但对我来说这将是最后的选择。我没有任何所需的工具,而我们使用的Apache来自一个使用Microsoft Visual C++构建其余部分的网站。 - John Munsch
2
使用mod_sed怎么样?它可能比使用proxy_html要丑一点。 - Jon Lin
1个回答

3

这是一个老问题,但我刚面临同样的问题。 我尝试使用mod_proxy_html,编译mod_proxy_xml,但都没用。

@JonLin的建议很棒,使用mod_sed可以解决问题。 唯一的限制是mod_sed文档说明只在Directory节点中工作。 如果你声明Location并使用SetOutputFilter(而不是需要mime类型的AddOutputFilter),它可以完美地工作。

有效的配置如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接