mod_rewrite: установка GET в зависимости от HTTP_HOST - PullRequest
1 голос
/ 27 августа 2009

Я недавно обнаружил силу модуля mod_rewrite, и мне нужна помощь с ним.

Скажем, у меня есть веб-сайт, на котором два доменных имени отображаются на один хост ...

example.com
example.net

И я хотел бы установить переменную GET в зависимости от HTTP_HOST (т.е. .com ИЛИ .net?) ...

/index.php?lang=en
/index.php?lang=es

Однако предостережение заключается в следующем .. У меня уже есть 3 RewriteRules ...

RewriteRule ^(about|contact)/?$ /index.php?page=$1 [NC]
...
..

И если бы я следовал примеру над здесь (нижняя часть RewriteCond), мне пришлось бы скопировать 3 RewriteRules для каждого HTTP_HOST (то есть .com OR .net) и добавить статическую переменную GET как ; & lang = ru ИЛИ & lang = es и конец каждого правила ...

Есть ли какой-нибудь способ сделать это автоматически, без необходимости копировать 3 правила заново, которые отличаются только одним get var в конце?

PS. Я знаю, что это можно сделать с помощью языка сценариев, но мне было интересно, можно ли это сделать с помощью mod_rewrite и как.

спасибо!

1 Ответ

2 голосов
/ 27 августа 2009

Попробуйте поставить что-то вроде этого перед всеми другими вашими правилами:

RewriteCond %{HTTP_HOST} .com$
RewriteRule ^(.*)$ $1?lang=en [QSA]
RewriteCond %{HTTP_HOST} .net$
RewriteRule ^(.*)$ $1?lang=es [QSA]

Хотя вам лучше использовать переменную окружения для указания языка, используйте директиву SetEnv с различным языком на каждом виртуальном хосте.

Или, может быть, еще лучше, посмотрите mod_negotiation , который содержит некоторые стандартные возможности для работы с языками.

...