古い Apache (2.2.17) をプロキシにしようとしています:
http://foo.com/proxy/?url=http%3A%2F%2Fbar.com%2foo
に:
私は持っている:
RewriteCond %{QUERY_STRING} ^url=(.*)$
RewriteRule ^/proxy/ %1? [P,L]
残念ながら、これにより Apache は URL エンコードされた値 (ログ出力) をプロキシしようとします。
(3) パターン '^/proxy/' を uri '/proxy/' に適用
(4) RewriteCond: input='url='http%3A%2F%2Fbar.com%2foo'' pattern='^url=(. *)$' => 一致
(2) '/proxy/' を書き換え -> ''http%3A%2F%2Fbar.com%2foo'?'
(3) 分割 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'
( 1) プロキシ リクエスト プロキシを使用します:http://foo.com/'http%3A%2F%2Fbar.com%2foo' [OK]
したがって、2 つの問題があるようです。1 つは結果にアポストロフィが含まれていること、もう 1 つは結果が URL デコードされていないことです。Apache が元の protocol://host を先頭に追加する理由は、結果が URL として認識されないためだと思います。