Apacheでパラメータに「%2F」(/の符号化文字列)が含まれていると404(Not Found)が返される

社内のサービスでは、フロントエンドにリバースプロキシ兼ロードバランサ用途として、Apache2.2を使っていることは、たまにちょくちょく書いている通りですが、そのバックエンドにいるアプリの開発メンバーにURL文字列をエンコードすると404エラー(Not Found)が返されるようになったと相談を受けました。


正直、その場で原因がわからなかったので、色々調べ始めると、
Apacheでは、AllowEncodedSlashesディレクティブっつーのがあって、公式ドキュメントから引用すると、

AllowEncodedSlashes ディレクティブは符号化されたパス分離文字
(/ は %2F、さらにシステムによっては \ に対応する %5C)が存在する
URLの使用を許可するかどうかを決定します。通常はそのようなURLは
404 (Not found) エラーで拒否されます。

だそうな。


ということで、
フロントのApacheで部分的に%2Fを許可する設定をしました。
といっても、

AllowEncodedSlashes On


の1行を特定部分に書いただけなんだけど。
そんな感じで、他の部分への影響が無いかどうかを確認してもらっています。