ブログリトライ

初心に戻って運営するブログです

mod_rewriteで%3Fを含むURIが正しく処理されない

mod_rewritehttp://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] # おまじない
# 以下に本来やりたかったことがくる

こんな感じで一行入れたら狙った動きをしてくれるようになった。