タグ: #Apache
AllowEncodedSlashes On RewriteRule ^/(.*)$ http://backend/$1 [QSA,L,P]みたいな設定を書いてるときにfrontendに
http://frontend/keyword/Fate%2Fstay+nightなリクエストが来ると、この設定だとbackendには
http://backend/keyword/Fate/stay+night%2Fのままプロキシするには以下のように設定をすればよい。
AllowEncodedSlashes On RewriteCond %{THE_REQUEST} /([^\ ]+) RewriteRule ^/(.*)$ http://backend/%1 [QSA,L,P,NE]RewriteCondで生のリクエスト文字列にマッチングを掛けて、RewriteCondの後方参照(%N)を使えば%2Fのままプロキシできるというわけでしたー。
apacheが%2Fを勝手にデコードして生きるのが辛いとき - かみぽのメモ
「AllowEncodedSlashes On」を追加するだけじゃ問題は解決していません。
一度デコードされてしまうんで、例えば「%2f(ASCIIの「/」)」とかがあるとすると、いったいそれがもともと「/」で入ってたのか、「%2f」で入ってたのかわからなくなってしまうんですよね。
そこで上記の設定が役に立ちます。
1年前 | 固定リンク | 2011年 4月 30日 | 
