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を再起動すれば、リダイレクトが成功するようになっています。

参考