-1
我已經使用mod_proxy和mod_proxy_http將我的apache 2.2服務器配置爲簡單的轉發代理。如何重寫URL去mod_proxy
當客戶端請求以下格式的URL:
http://specific.host.com/specific?specificarg1=(.+)&specificarg2=(.+)&specificarg3=specificvalue
在重寫形式,其中用於specificarg1和specificarg2值獲得由我的服務器配置定義的值替換請求。
它也可能不使用正則表達式,但重寫一個特定的網址到另一個特定的網址,但我寧願與正則表達式匹配。
所以讀完documentsations mod_rewrite的,mod_proxy的等以後我試着像下面這樣來得到某種重寫的所有工作:
RewriteRule .* http://www.google.com/ [P,L
]
就像在服務器配置,沒有什麼衝浪在代理
<VirtualHost *:80>
ServerName domain-i-tried-to-surf-to.com
`RewriteRule .* http://www.google.com/ [P,L]
</VirtualHost>
沒有運氣,要麼
ProxyPass(Reverse)/http://www.google.com
ProxyPass(Reverse) /path/i/tried/to/surf/to http://www.google.com
獲取時rewriten
沒有運氣太
ProxyRemote * http://www.google.com
沒有運氣以及
我也試圖把重寫規則到proxymatch指令,但我只是無法改寫的URL。有人能指出我正確的方向嗎?
可能應該提到我照顧了所有的模塊和enginges被解僱。我在想這些規則都不匹配,因爲網頁的來源不是本地服務器。我認爲這些指令旨在處理當前主機背後的資源。而不需要用戶已經配置了代理服務器。我想要的是重寫通過轉發代理請求的url,但是其中的起源不是本地服務器。我知道它有點偏離主流,但是我認爲它應該是可能的,但是這個文檔對此很模糊...... – 2011-06-05 15:55:52
「解決方法」是通過將/ etc中的ip連接到另一個服務器來強制對特定域的請求/ hosts,然後該另一臺服務器具有一個vhost虛擬主機容器,該虛擬主機虛擬主機容器被配置爲監聽它,然後處理重寫規則。但我不想涉及第二臺服務器... – 2011-06-05 15:57:11
啊。那麼澄清一下:你有服務器A作爲服務器B的代理服務器,並且你正在把重寫表達式放在服務器A中?如果這是正確的,你可以編輯你的問題,幷包括你的整個配置文本的服務器A,只是讓我可以肯定是什麼,因爲這應該工作得很好,但我無法從你提供的片段告訴發生了什麼事情。 – Femi 2011-06-05 16:06:09