Apache-2.2

ProxyHTMLURLMap 替換 url 兩次

  • January 1, 2014

為了解釋標題,我把這個(這是唯一的 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?

我最終根本沒有使用 mod_proxy_html。我不建議任何人使用它…

其他解決方案:

1.啟用替代模組(在httpd.conf中取消註釋以下行)

LoadModule substitute_module modules/mod_substitute.so

2.創建一個正則表達式來改變你想要的,在我的例子中:

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

3.將 SUBSTITUTE 添加到輸出過濾器

SetOutputFilter INFLATE;SUBSTITUTE;DEFLATE

完畢。

引用自:https://serverfault.com/questions/564202