Nginx localization rewrite

cackle nginx-forum на nginx.us
Вс Июл 8 09:48:16 UTC 2012


Добрый день.

Необходимо написать rewrite правила для
Английской и Русской версии сайта.
Пускай домен сайта example.com по умолчанию
у него Английская локаль.

Если у пользователя в браузере en
локаль, то он должен попадать на example.com,
если ru локаль, то на ru.example.com.
Для этого я написал следующие правила:

...
location / {
if ($host = 'example.com') {
set $zzz e;
}
if ($http_accept_language ~* "^ru") {
set $zzz "${zzz}ru";
}
if ($zzz = eru) {
rewrite ^/(.*)$ http://ru.example.com/$1 permanent;
}
...
}

Следующие случаи работают прекрасно:
1. юзер с локалью en заходит на example.com
2. юзер с локалью en заходит на ru.example.com
3. юзер с локалью ru заходит на example.com и
его редиректит на ru.example.com

Как быть, если юзер с локалью ru хочет
зайтина example.com только на английскую
версию сайта?
Можно сделать en.example.com и дальше
редиректить его на example.com, но в таком
случае он снова окажется на ru.example.com.

Как сделать так, чтоб если пользователь
с ru локалью выбирал бы en.example.com, его
редиректило на example.com, но без
выполнения последующего редиректан на
ru.example.com?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,228390,228390#msg-228390



Подробная информация о списке рассылки nginx-ru