mod_rewriteで%3Fを含むURIが正しく処理されない
mod_rewriteで http://exapmle.com/h/h?b=a をリダイレクトしたかったんだけど、どうしても漏れるパターンがあった。それは http://exapmle.com/h/h%3Fb=a のように「?」がURLエンコードされちゃってるパターン。
これくらい対応してると思ってたんだけど、よくよく調べるとApacheのバグとしてあがってた。。2.2系では直ってるみたいなんだけど、今回使ってるのは2.0系。
散々考えた挙句、思いついたのは「%3Fを無理矢理?にしちゃえばよくね?」という力技w
RewriteEngine On RewriteRule ^/(.+)\?(.+) /$1?$2 [N] # おまじない # 以下に本来やりたかったことがくる
こんな感じで一行入れたら狙った動きをしてくれるようになった。