ProxyHTMLURLMap 替换两次给出的 url

ProxyHTMLURLMap 替换两次给出的 url

为了解释标题,我已将此(这是唯一的 htmlUrlMap)放入我的conf中:

ProxyHTMLURLMap / /rp/ticket/

这是我的 html 中的内容:

<script type="text/javascript" src="/js/jquery-1.8.3.min.js"></script>

预期结果:

<script type="text/javascript" src="/rp/ticket/js/jquery-1.8.3.min.js"></script> 

实际产量:

<script type="text/javascript" src="/rp/ticket/rp/ticket/js/jquery-1.8.3.min.js"></script> 

这很奇怪......,更多的配置:

<Location /rp/ticket/>
    ProxyHTMLEnable On

    ProxyHTMLBufSize  102400
    ProxyHTMLExtended On
    ProxyHTMLStripComments Off
    ProxyHTMLDocType "<!DOCTYPE html>"
    ProxyHTMLMeta Off
    ProxyHTMLCharsetOut *
    ProxyHTMLURLMap / /rp/ticket/
    ProxyPass http://ticket.domain.com/
    ProxyPassReverse http://domain.com/

    SetOutputFilter INFLATE;proxy-html;DEFLATE
    RequestHeader    unset  Accept-Encoding
</Location>

我最好的猜测是 <location> 是问题的原因,它被附加到我的自定义地址,但是在将地址更改为其他内容(“/rp/test”)之后,而不是获取

src="/rp/ticket/rp/test"

我有

src="/rp/test/rp/test"

所以这不是问题

我在 WindowsServer 2008 (x64) 上拥有 Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7。使用 Xampp (xampp-win32-1.8.1-VC9.zip) 安装了 apache。

很有可能是我配置错误或者犯了一些明显的错误,但两天后我还是无法解决这个问题。如能得到任何帮助我将不胜感激。

- - - - -编辑:

看起来我完全不明白这是怎么回事。查看修改后的源代码,有一个 javascript 注释

// What's the page height?

它被改为:

/rp/ticket/rp/rp/ticket/ticket/rp/ticket//rp/ticket/rp/rp/ticket/ticket/rp/ticket/ What's the page height?

答案1

我最终根本没有使用 mod_proxy_html。并且我也不建议任何人使用它......

其他解决方案:

1.启用 substitute_module(取消注释 httpd.conf 中的以下行)

LoadModule substitute_module modules/mod_substitute.so

2.创建一个正则表达式来改变你想要的内容,就我而言:

Substitute "s|\"/|/rp/ticket/|iq"

3.将 SUBSTITUTE 添加到输出过滤器

SetOutputFilter INFLATE;SUBSTITUTE;DEFLATE

完毕。

相关内容