我試圖獲得較舊的Apache(2.2.17)來代理:如何在Apache中代理查詢字符串URL?
http://foo.com/proxy/?url=http%3A%2F%2Fbar.com%2foo
到:
我:
的RewriteCond%{QUERY_STRING }^url =(。*)$
RewriteRule ^/proxy /%1? [P,L]
不幸的是,這導致了Apache的試圖代理URL編碼值(日誌輸出):
(3)將圖案 '^ /代理/' 到URI '/代理/'
(4)RewriteCond:input ='url ='http%3A%2F%2Fbar.com%2foo''pattern ='^ url =(。*)$'=> matched
(2)rewrite'/ proxy /' - >''http%3A%2F%2Fbar.com%2foo'?'
(3)split uri ='http%3A%2F%2Fbar.com%2foo'? - > uri ='http%3A%2F%2Fbar.com%2foo',args =
(2)強制代理吞吐量與http://foo.com/'http%3A%2F%2Fbar.com%2foo'
- 帶有代理請求代理:http://foo.com/'http%3A%2F%2Fbar.com%2foo'[確定]
所以,看起來有兩個問題。一個是結果中有撇號,另一個是結果不是URL解碼。我假定Apache的原因是預先加入了原始協議://主機是它沒有將結果看作URL。
修復了URL解碼問題。我現在得到: http://foo.com/'http://bar.com/foo' 我該如何擺脫撇號,並得到它來代理真正的URL? –
@JayVachhani根本不應該在那裏,這在我的apache安裝中適用於我。除非在查詢字符串中有url,否則我想你可以通過將正則表達式改爲:'^ url ='?(。*?)'?$' –