mod_rewriteでクエリ付きのURIをリダイレクトする
http://hige.jp/moja.php?category=1
→
http://hige.jp/moja.php?category=999
というリダイレクトをApacheで実現するにはどうすればいいでしょうか?リダイレクトの方法はいろいろありますが、今回RedirectやAliasディレクティブは使えません。これらはクエリ文字列(?category=999の部分)を把握できないようです。
そんな時は、mod_rewriteの RewriteCond ${QUERY_STRING} を使うと良いです。具体的には以下の用にします。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} category=1
RewriteRule ^/moja.php /moja.php?category=999 [R=301,L]
</IfModule>
これでApacheを再起動すれば、リダイレクトが成功するようになっています。