社内のサービスでは、フロントエンドにリバースプロキシ兼ロードバランサ用途として、Apache2.2を使っていることは、たまにちょくちょく書いている通りですが、そのバックエンドにいるアプリの開発メンバーにURL文字列をエンコードすると404エラー(Not Found)が返されるようになったと相談を受けました。
正直、その場で原因がわからなかったので、色々調べ始めると、
Apacheでは、AllowEncodedSlashesディレクティブっつーのがあって、公式ドキュメントから引用すると、
AllowEncodedSlashes ディレクティブは符号化されたパス分離文字 (/ は %2F、さらにシステムによっては \ に対応する %5C)が存在する URLの使用を許可するかどうかを決定します。通常はそのようなURLは 404 (Not found) エラーで拒否されます。
だそうな。
ということで、
フロントのApacheで部分的に%2Fを許可する設定をしました。
といっても、
AllowEncodedSlashes On
の1行を特定部分に書いただけなんだけど。
そんな感じで、他の部分への影響が無いかどうかを確認してもらっています。