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]