RewriteRuleのパターンにquery stringやfragmentは使えない
会社の同僚がハマってて、首を突っ込んだら自分もハマったのでメモ。
ApacheのRewriteRuleのパターンではquery stringやfragment*1は引っ掛けられないらしい。
query stringはパターンに引っ掛けて処理することができない制約がある。ただし、受け取ったquery stringを置換後のURLにそのままくっつけてやることはできる(できないと困る)。
fragmentはそもそもブラウザがサーバに送らないという罠。
hoge.php?foo=123&bar=456
とかいうURLを
hoge.php/123/456
というように変換してredirectやproxy処理したい場合はどうすればいいんだろう。
結局、間にひとつプログラムをかますことで対処したようだけど。
fragmentについては、
hoge.php?foo#bar
というURLをリダイレクトするときに#barを取り除きたかったんだけど、どうしてもリダイレクト後のURLにも#barがくっついてしまう。