mod_rewrite でパラメータ(引数)付きの URL を扱う(QSA オプション)
2008年 4月 17日 17:16mod_rewrite は便利なのでよく使うのですが、mod_write 用の URL に追加で URL パラメータ(引数)を渡そうとしてもうまくいかなかったりします。
調べた所、QSA (query string append)オプションというのをつけると mod_rewrite で処理した後の URL にパラメータ(引数)を受け渡してくれるようです。
具体的には
http://example.com/bbs/123
みたいな URL を
http://example.com/bbs.php?no=123
に処理する mod_rewrite の設定
RewriteRule ^bbs/(.*)$ /bbs.php?no=$1
があったとします。
これにさらにパラメータを付加する必要がでてきて、
http://example.com/bbs/123?s=99&e=129&q=hogepage
みたいな状態になってしまったとします。
上述の mod_rewrite の設定のままだと、? 以降の文字列が無視されてしまいますが、QSA オプションを使って次のように記述すると? 以降の引数を mod_rewrite で処理した後の URL に付加して処理を実行してくれます。
RewriteRule ^bbs/(.*)$ /bbs.php?no=$1 [QSA]
↑この設定だと↓こんな感じに書き換えてくれます。
http://example.com/bbs.php?no=123&s=99&e=129&q=hogepage