mod_rewriteでの最後の砦 - As a Futurist...をみて、僕もApacheでURLに%2Fを含むリクエストをリバースプロキシするときに困ったことがあったなーというのを思い出した。
AllowEncodedSlashes On RewriteRule ^/(.*)$ http://backend/$1 [QSA,L,P]
みたいな設定を書いてるときにfrontendに
http://frontend/keyword/Fate%2Fstay+night
なリクエストが来ると、この設定だとbackendには
http://backend/keyword/Fate/stay+night
%2FがデコードされたURLにプロキシしてしまう!
%2Fのままプロキシするには以下のように設定をすればよい。
AllowEncodedSlashes On RewriteCond %{THE_REQUEST} /([^\ ]*) RewriteRule ^/(.*)$ http://backend/%1 [QSA,L,P,NE]
RewriteCondで生のリクエスト文字列にマッチングを掛けて、RewriteCondの後方参照(%N)を使えば%2Fのままプロキシできるというわけでしたー。
それではAKB48 22ndシングル 選抜総選挙チャンネル監視業務に戻ります∠( ̄∧ ̄)