0

変更方法:

domain.com/go/?custom_ref=001

の中へ

domain.com/go/?ref=001

htaccess rewrite を使用してください。

4

1 に答える 1

0

特に柔軟性はありませんが、これは正確な問題に対して機能します。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^ref=([0-9]*)
RewriteRule ^go/$ go/?custom_ref=%1 [QSA]

条件が一致するためにrefは、クエリ文字列の最初に来る必要があることに注意してください。ルールの[QSA](Query String Append)フラグは元のクエリ文字列を保持するため、渡された他の値が失われることはありません。

また、このコードは、.htaccessファイルがドキュメントルートにあることを前提としていることに注意してください。ファイルが他の場所にある場合は、を調整する必要がありますRewriteRule。たとえば、.htaccessファイルが/go/.htaccessに配置されている場合は、次のように変更すると機能します。

RewriteRule . ?custom_ref=%1 [QSA]

これをより柔軟にしたい場合は、この質問への回答を確認してください。クエリ文字列内の1つの変数を変更し、他のすべてを保持するための構文が含まれています。


編集:

クエリ文字列でを置き換えるcustom_refには、次のコマンドを使用して、変数refを含むリクエストをリダイレクトできます。と他のルールのcustom_ref間にこれを追加します。RewriteEngine On

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)custom_ref=(.*)
RewriteRule ^go/$ /go/?%1ref=%3 [R=301,L]

これは、解決策というよりはパッチです。コードにアクセスできる場合は、代わりに変数名を修正することをお勧めします。

于 2012-11-13T20:05:23.527 に答える