mod_rewriteのQSAフラグの存在をよく忘れる件
Apacheにはmod_rewriteというURLをリダイレクトしたりするのに
使える便利なモジュールがあります。
使いすぎるとかなりの黒魔術状態ですが、
やっぱり使ってしまう。
mod_rewriteの簡単な紹介記事は
mod_rewrite サンプル集
http://tech.bayashi.jp/archives/entry/techweb/2007/001981.html
など参考になります。
mod_rewriteは便利なんですが、一つ困ったことがあります。
たとえば、
http://foo.bar/hoge/foo?page=1
みたいなURLをmod_rewriteを使って書き換えた場合、
最初からついてたパラメータ
page=1
が消えてしまうんですね。
んで、元々ついてたGETのパラメータを消さないようにするための仕組みが
QSAフラグというやつで、
こんな感じに使います。
RewriteRule ^hoge/([0-9]+)$ /hoge.php?param=$1 [QSA]
この場合
にアクセスした場合
http://foo.bar/hoge.php?param=1&page=2
というURLにリダイレクトされる、と。
いつも忘れて検索してしまうので、メモっておきます。