как убрать путь в nginx и сделать redirect?
Есть запрсы условно https://example.com/ru/paths или https://example.com/en/paths, после ru и en может буть любой путь и с параметрами и без. Вопрос как убрать ru и en и оставить например https://example.com/paths. На новом сайте нет указаанию языка в пути, но гугл сканирует их а это плохо для seo
Ответы (1 шт):
все просто
нужно составить директиву rewrite с помощью регулярного выражения, которое будет обрабатываеть все запросы начинающиеся с en или с ru
выглядеть оно будет примерно так:
^/(en|ru)(.*)$
^- символ начала строки$- символ конца строки(...)- группировка, позже к ней можно будет обращаться через знак доллара и номера этой группировки символов ($1,$2).- может обозначать любой символ.*- любое количество любых символов
как итог - ^/(en|ru)(.*)$ соответствует любой строке, начинающейся с /en или с /ru и с любым набором символов до конца строки после. Причем мы сгруппировали код языка и оставшуюся адресную строку, чтобы впоследствии с ними можно было работать.
В конфигурацию нужно будет добавить строку
rewrite ^/(en|ru)(.*)$ $2 permanent;
здесь мы объявляем директиву rewrite и передаем ей шаблон поиска в виде, составленного выше регулярного выражения и строкой замены ($2).
В данном случае мы будем заменять на вторую группу - то есть на оставшуюся строку.
Добавляется все это в блоке server
server {
# ...
rewrite ^/(en|ru)(.*)$ $2 permanent;
# ...
}
все работает как надо
