Перенаправить домен на язык по умолчанию NGINX - PullRequest
0 голосов
/ 26 февраля 2020

Так долго пытался перенаправить на 301 site.com на site.com/en и site.com/my-page на site.com/en/my-page

Мне удается заставить работать первое перенаправление, но не второе! также возможно ли использовать только одно правило для обоих? Так что не так с моим вторым правилом?

rewrite "^/(?![a-z]{2}|[a-z]{2}-[a-z]{2})$" /en redirect;
rewrite "^/(?![a-z]{2}|[a-z]{2}-[a-z]{2})/(.*)$" /en/$2 redirect;

Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я думаю, что вы можете подойти к нему под другим углом, определив соответствующие местоположения, например:

location / {
    return 301 /en$request_uri;
}

location = /my-page {
    return 301 /en/my-page;
}

location /en/ {
   ...
}

0 голосов
/ 26 февраля 2020

У вас нет 2 групп захвата во втором регулярном выражении, только одна. Первая пара круглых скобок - это негативный взгляд, который не создает группу захвата. Вот почему вы не можете использовать $ 2 в перенаправлении.

Обновлено

Этот редирект должен заменить оба ваших правила:

rewrite "^((?!/([a-z]{2}|[a-z]{2}-[a-z]{2})(/|$)).*)$" /en$1 last;
...