Apache の mod_rewrite を使っているときに、正規表現は正しいのに、どうしてもうまく書き換えルールが適用されず、404 エラーになってしまう現象に悩んでいました。どうやら$2F の罠のようです。 REQUEST_URI のパスの部分に「%2F」が含まれると mod_rewrite は動作しない。 まさにこれが原因だったようです。回避方法として、 Apache 2.0.46 and later より allowEncodedSlashes Directive が追加され、 ‘%2F’がURIに含まれていても、 これを on にすれば 404 Not Found を返さなくなった。 というのが示されていましたが、作業していた Apache は諸事情により最新版ではないので、パッチをバックポートしなければなりません。面倒くさいので、断念しました。しかし、これははまりますね。