mod_rewriteでGETパラメータ名を変更する 
mod_rewriteのお話
旧システムから新システムの以降など、システムの仕様が変わる時でも古いURLを引き継ぎたい場合に役に立つ小技です。
問題1
GETパラメータの名前aaaをbbbに変更したい場合はどのようにすれば良いか?
誤
ついつい以下のように設定してしまうかと思いますが、うまく動きません。
RewriteRule filename.html\?aaa=(.*) filename.html?bbb=$1 [L]
正
RewriteCondを使い、QUERY_STRINGの条件を指定すると、うまく動きます。
RewriteCond %{QUERY_STRING} aaa=(.+)
RewriteRule filename.html filename.html?bbb=%1 [L]
%1で、RewriteCondでマッチしたパターンを取得できる。
問題2
GETパラメータの名前aaaをbbbに変更したいが、aaa以外のパラメータはそのまま残したい場合はどのようにすれば良いか?
解答1
QSAをつける。
RewriteCond %{QUERY_STRING} aaa=(.+)
RewriteRule filename.html filename.html?bbb=%1 [L,QSA]
解答2
以下の場合、aaaのみbbbに書き換える事ができる。
RewriteCond %{QUERY_STRING} ^(.*)aaa=(.+)$
RewriteRule filename.html filename.html?%1bbb=%2 [L]
オマケ
『上記試してみましたが、うまく動きません!』という場合
上から順に評価されるので、こんな事しているとうまく動かない。
#ファイルが存在する場合はそれを表示する
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
# ↑ファイルが存在した時点で、上記が評価されて終わってしまう。
#パラメータ名を書き換える。
RewriteCond %{QUERY_STRING} ^(.*)aaa=(.+)$
RewriteRule filename.html filename.html?%1bbb=%2 [L]
順番を変更する事でうまく動く。
#パラメータ名を書き換える。
RewriteCond %{QUERY_STRING} ^(.*)aaa=(.+)$
RewriteRule filename.html filename.html?%1bbb=%2 [L]
#↑先に評価される。
#ファイルが存在する場合はそれを表示する
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]
そんな感じで、お役に立てれば幸いです。