2010-06-24 231 views
0

我想執行的htaccess以下規則的一部分:htaccess的重寫只查詢字符串

www.domain.com/folder/?id=14077&c=en-gb -> www.domain.com/folder/?id=14077 
www.domain.com/folder/?c=en-gb&ID=14077 -> www.domain.com/folder/?id=14077 
www.domain.com/folder/?id=14077&c=fr-fr -> www.domain.fr/folder/?id=14077 
www.domain.com/folder2/?c=fr-fr&ID=14077 -> www.domain.fr/folder2/?id=14077 
www.domain.com/folder2/?c=en-us&ID=14077 -> www.domain.us/folder2/?id=14077 

基本上取出查詢字符串的「C」的一部分,它重定向到一個新的域的基礎上,以下規則:

c=en-gb -> www.domain.com 
c=fr-fr -> www.domain.fr 
c=en-us -> www.domain.us 

任何幫助歡迎!

回答

1

誠然,我不知道這是最好的mod_rewrite解決的任務......但什麼是地獄,爲什麼不:

(不完全測試,但它似乎運作良好)

RewriteEngine On 
RewriteCond %{QUERY_STRING} (.*)(\A|&)c=([A-Za-z\-]+)&?(&.*)?$ 
RewriteRule .* - [E=SWITCHLANG:%3,E=QSONE:%1,E=QSTWO:%4] 

RewriteCond %{ENV:SWITCHLANG} =en-gb [NC] 
RewriteCond %{HTTP_HOST} !(.*)\.com$ 
RewriteRule (.*) http://www.domain.com/$1?%{ENV:QSONE}&%{ENV:QSTWO} 

RewriteCond %{ENV:SWITCHLANG} =fr-fr [NC] 
RewriteCond %{HTTP_HOST} !(.*)\.fr$ 
RewriteRule (.*) http://www.domain.fr/$1?%{ENV:QSONE}&%{ENV:QSTWO} 

RewriteCond %{ENV:SWITCHLANG} =en-us [NC] 
RewriteCond %{HTTP_HOST} !(.*)\.us$ 
RewriteRule (.*) http://www.domain.us/$1?%{ENV:QSONE}&%{ENV:QSTWO} 
+0

太棒了,我已經放棄了實現這一目標的希望! – 2010-06-25 13:18:12