パラメータ付きのURL
例:http://aaa.jp/bbb.html?p=123
これを静的なURL
例:http://ccc.jp/ddd.html
に301リダイレクトするんですが、転送回数が2回になるという妥協した方法を書いてます(汗)
301リダイレクト時の.htaccessの記述
元URLと新URLを見て、301リダイレクトを設定する場合、.htaccessに以下のように記述するかと思います。
Redirect permanent /bbb.html?p=123 http://ccc.jp/ddd.html
で、これを動作させるとリダイレクト先のURLにパラメータが付いてしまうんですね。
こんな感じ
⇒ http://ccc.jp/ddd.html?p=123
パラメータを削除できないかと、検索して、何ページか参考になりそうな記事を見たんです。

とか
など。
で、拝見したページを参考に.htaccessを記述して、元URLから遷移させてみると.htaccessに記述する正規表現が悪いのか上手く遷移できなかったんです。
そもそも正規表現とか、よく分からないんですけどね(開き直り)
.htaccessに記述する元URLからパラメータを取ってしまう
元URL⇒http://aaa.jp/bbb.html?p=123
新URL⇒http://ccc.jp/ddd.html
の場合、.htaccessには以下のように書くのが通常パターンでした。
Redirect permanent /bbb.html?p=123 http://ccc.jp/ddd.html
元URLにパラメータがあるので、遷移先URLにパラメータが付いてしまうというのが、先に書いた問題点でした。
いろいろ調べた結果、.htaccessに記述していたパラメータを削除すると良いいう結論になりました。
こんな感じ。
Redirect permanent /bbb.html http://ccc.jp/ddd.html
どうして、パラメータを削除することにしたかは、このページを見たからです。

この記事の途中にパラメータを形式を問わず、パラメータなしのリダイレクトするコードがあったんです。引用して以下にコードを記述します。
RewriteEngine on RewriteBase / RewriteCond %{QUERY_STRING} !="" RewriteRule ^(.*)$ /$1? [R=301,L]
こんな感じ。
パラメータを削除した301リダイレクトのコードと、パラメータなしのURLにリダイレクトするコードを同時に書くことで以下のような順序で2回、301リダイレクトが行われます。
元URL:http://aaa.jp/bbb.html?p=123
↓
パラメータなし:http://aaa.jp/bbb.html
↓
新URL:http://ccc.jp/ddd.html
301リダイレクトがきちんと行われているか確認したい場合は、以下のようなステータスをチェックできるウェブサービスを利用すると良いです。
この手順の場合、元URLのパラメータが複数あっても、前述のコードは変わりません。
http://aaa.jp/bbb.html?p=123
http://aaa.jp/bbb.html?p=456
http://aaa.jp/bbb.html?p=789
こんな感じでパラメータの値だけ違っても、記述するコードは上記のみ、とういことです。
ただ、パラメータの値ごとに、違うURLにリダイレクトしたいという場合は、この記事の方法だと難しいです。
元URLごとに正規表現などを使って.htaccessにコードを記述する必要があるかと思います。