LINUX.ORG.RU

Как сделать nginx rewrite с url без кода языка в начале, на url с кодом языка.

 , ,


0

1

Добрый день!

Раньше на сайте не было переключения между языками. Сейчас в начало url добавляется код языка. Например: было http://www.example.com/ssilka стало http://www.example.com/ru/ssilka

Как сделать правильно редирект чтобы все ссылки без кода /ru/ вначале перенаправлялись на такие же ссылки только с кодом /ru/.

Я пробовал сделать так

set $default_lang "/ru";
if ($request_uri !~ "^/en/.*$|^/ru/.*$")
{
return 301 https://$host$default_lang$request_uri;
}

но в таком случае не работает ссылка на главную http://www.example.com и ссылки типа http://www.example.com/ru http://www.example.com/en

а также проблемы з ссылками на изображения и js а также css .

С уважением, Сергей.

Сделайте отдельные location для «= /», просто «/», «/ru», «/en» и для статики

http://nginx.org/ru/docs/http/ngx_http_core_module.html#location

Внутри локейшена «/» добавьте правило по рерайту если все остальные локейшены вы создали, то можно без проверки

if ($request_uri !~ «^/en/.$|^/ru/.$»)

а просто:

return 301 https://$host$default_lang$request_uri;

, внутри остальных, по идее это не нужно.

chaos_dremel ★★ ()
Ответ на: комментарий от chaos_dremel

Так мне же нужно старые ссылки типа http://www.example.com/ssilka http://www.example.com/ssilka1 http://www.example.com/ssilka2

перенаправить автоматически на http://www.example.com/ru/ssilka http://www.example.com/ru/ssilka1 http://www.example.com/ru/ssilka2

А если пользователь уже набирает правильную ссылку с /ru/ - http://www.example.com/ru/ssilka , то перенаправление уже не нужно.

serglema ()