11

.htaccess で 301 リダイレクトを試みます。

問題:

/?view=products&id=12345 -> /8831

旧住所と新住所の間には何の関係もありません。

何らかの理由で

Redirect 301 /?view=products&id=12345 /8831

動作しません。疑問符を削除すると、疑問符なしで機能します。

私も試しました:

RewriteCond %{QUERY_STRING} view=products&id=12345
RewriteRule .*$ /8831 [L,R=301]

しかし、それは私をにリダイレクト/8831?view=products&id=12345します。これは私にとっては良くありません。新しい URL にクエリ文字列は必要ありません。

4

1 に答える 1

21
RewriteCond %{QUERY_STRING} view=products&id=12345 
RewriteRule .*$ /8831? [L,R=301]

エンディングは、フラグを再度?指定しない限り、元のクエリパラメータが追加されないようにします。[QSA]

マニュアルから:

注:クエリ文字列パターンはクエリ文字列と照合されません。代わりに、%{QUERY_STRING}変数でRewriteCondを使用する必要があります。ただし、クエリ文字列部分を含むURLを置換文字列に作成することはできます。置換文字列内に疑問符を使用するだけで、次のテキストをクエリ文字列に再挿入する必要があることを示します。既存のクエリ文字列を消去する場合は、疑問符だけで置換文字列を終了します。新しいクエリ文字列を古いクエリ文字列と組み合わせるには、[QSA]フラグを使用します。

于 2013-03-07T17:00:54.680 に答える