mod_rewrite - QSAフラグ
Rev.2を表示中。最新版はこちら。
リファレンスを読んでもいまいちピンと来ないQSAに関するメモ。
QSAオプションがないケース
RewriteRule ^/(.+)/pg/(.*)$ /$1/index.php?pg=$2 [L]このルールは http://www.bit-hive.com/april/pg/sample のようなURLを http://www.bit-hive.com/april/index.php?pg=sample のように変換するものである。
QSAオプションがないと http://www.bit-hive.com/april/pg/sample?code=1 のようにクエリ文字列が付加されていた場合でもhttp://www.bit-hive.com/april/index.php?pg=sample
のようクエリ文字列が置き換えられてcode=1は消えてしまう。
QSAオプションがあるケース
上記のように入力URLにクエリ文字列が存在する場合は、QSAをいれて以下のようにしておけばよい。RewriteRule ^/(.+)/pg/(.*)$ /$1/index.php?pg=$2 [QSA,L]http://www.bit-hive.com/april/pg/sample?code=1 はhttp://www.bit-hive.com/april/index.php?pg=sample&code=1
のように最後にクエリ文字列code=1が付加された形に変換される。