mod_rewrite でパラメータ(引数)付きの URL を扱う(QSA オプション)

2008年 4月 17日 17:16

mod_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


トラックバック URL


※言及リンクのないトラックバックは削除されます。
※書き込まれてから公開されるまで時間がかかる場合があります。

コメントをどうぞ

Spam protection by WP Captcha-Free

※書き込まれてから公開されるまで時間がかかる場合があります。