2012-12-07 30 views
-1

我想從這個網址來恢復兩個變量:QUERY_STRING的RewriteCond的反向引用

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

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 .. 。它確保查詢字符串參數的順序與預期的正則表達式一樣