mod_rewriteでクエリー(QUERY_STRING)を扱うときのメモ。
●クエリーを残すリダイレクト
クエリーを残したままリダイレクトするには [QSA] オプションをつける。RewriteRule ^/cgi-bin/.* / [QSA]
http://www.example.com/cgi-bin/hoge.cgi?q=foo
は
http://www.example.com/?&q=foo
となり、q=foo は保持される。
また、もともとクエリーがあれば、追加してくれる。
RewriteRule ^/cgi-bin/(.*)/.* /?a=$1 [QSA]
とすると
http://www.example.com/cgi-bin/hoge/hage.cgi?q=foo
は
http://www.example.com/?a=hoge&q=foo
となる。
もともとのクエリー q=foo が QSA オプションで保持されたもの、そして a=hoge が新たに書き換えられて追加されたクエリー。
●クエリーを消す
逆に、クエリーを消すにはリダイレクト先に ? だけつけておく。
RewriteRule ^/cgi-bin/.* /?
http://www.example.com/cgi-bin/hoge.cgi?q=foo
は
http://www.example.com/
となり、q=foo は削除される。
