1

この URL から 2 つの変数を復元しようとしています。

RewriteCond %{QUERY_STRING} id_country=(.*)
RewriteCond %{QUERY_STRING} language=(en|it)
RewriteRule ^page33(.*) https://www.newsite.ch/page.php?language=%2&id_country=$1 [R=301,L]

ただし、%2 は常に空です。1 つの変数しか逆参照できないようです。

4

1 に答える 1

1

AFAIKあなたがそれを試すようにそれは不可能です。後方参照(%N変数)には、最後に一致した正規表現のデータのみが含まれます。

環境変数を使用して回避策を実行できます。

RewriteCond %{QUERY_STRING} id_country=(.*)
RewriteRule .* - [E=idcountry:%1]

RewriteCond %{QUERY_STRING} language=(en|it)
RewriteRule ^page33(.*) https://www.newsite.ch/page.php?language=%1&id_country=%{env:idcountry} [R=301,L]

別の解決策は、1つの正規表現で必要なすべての変数を一致させることです。

RewriteCond %{QUERY_STRING} id_country=(.*)
RewriteCond %{QUERY_STRING}&id_country=%1 language=(en|it).*&id_country=(.*)
RewriteRule ^page33(.*) https://www.newsite.ch/page.php?language=%1&id_country=%2 [R=301,L]

最初の引数から2番目の引数に注意してくださいRewriteCond...クエリ文字列の引数の順序が正規表現で期待どおりになることを確認してください

于 2012-12-07T15:40:46.623 に答える