我尝试从此网址恢复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始终为空。我似乎只能反向引用一个变量。
答案 0 :(得分: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]
不同的解决方案是在一个正则表达式中匹配您需要的所有变量:
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]
注意第二个RewriteCond
的第一个参数...它确保查询字符串参数的顺序与regexp中的预期一样