htaccess переписать только часть строки запроса - PullRequest
0 голосов
/ 24 июня 2010

Я пытаюсь выполнить следующее правило в 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 Ответ

1 голос
/ 24 июня 2010

Правда, я не уверен, что эту задачу лучше всего решить с помощью 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...