URLのクエリ文字列の一部のみ置き換えて、パラメータは引き継いでリダイレクトする方法。
RewriteRuleはURLパラメータを含まないらしく、なかなか思うように動作しなかったので覚え書きです。

【例】

http://XXXXXX.jp/data.php?no=a01_XXXXXX

こんなURLにアクセスした場合、

http://XXXXXX.jp/data.php?no=a02_XXXXXX

にリダイレクトしたい。XXXXXXはそのまま引き継ぎます。

【.htaccess】

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC]
RewriteCond %{HTTP_USER_AGENT} !iPad [NC]
RewriteCond %{HTTP_COOKIE} !viewmode=pc
RewriteCond %{QUERY_STRING} no=a01_(.*)$
RewriteRule (.*)$ data.php?no=a02_%1 [R=301,L]

【参考サイト】
http://d.hatena.ne.jp/mrgoofy33/20101021/1287672461

<追記>
パラメータに%が含まれる場合、RewriteRule に NE (noescape) がないと%25に変換されてしまい、正しく動作しません。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC]
RewriteCond %{HTTP_USER_AGENT} !iPad [NC]
RewriteCond %{HTTP_COOKIE} !viewmode=pc
RewriteCond %{QUERY_STRING} no=a01_(.*)$
RewriteRule (.*)$ data.php?no=a02_%1 [R=301,NE,L]

関連記事: