Как сделать редирект по части URL в Nginx?

День добрый

Прошу помощи, т.к. самостоятельно разобраться не получилось.
После регистрации домена и создания сайта в Яндекс.Вебмастере увидел, что от старого сайта осталось много "уже битых" ссылок вида:
site.ru/userfiles/images/zammojxhnlu.jpg,
site.ru/userfiles/images/img_8035.jpg, site.ru/storage/repertuar_images/cfbe2f9f6a8ca8d6b... и т.д. и т.п.
У всех этих ссылок есть общие части URL вида:
site.ru/userfiles/
site.ru/storage/
site.ru/repertuar/
site.ru/abonement/
site.ru/media/
site.ru/photogallery/
site.ru/festsimf2/

Собственно, вопрос: какое регулярное выражение нужно написать, чтобы по всем ссылкам, где встречаются эти части URL (папки userfiles, storage, repertuar и пр.), шёл 301 редирект на site.ru.
Код ниже делает редирект в том случае, если URL заканчивается на {имя папки}:
location ~* /(repertuar|userfiles|storage|abonement|media|photogallery)(/?).* {
rewrite  ^ / permanent;
}


Спасибо.
  • Вопрос задан
  • 1086 просмотров
Решения вопроса 1
DANic
@DANic
Интроверт
Не используйте регулярки в секции server, они убивают логику работы по поиску нужно локейшена

location /repertuar {
rewrite ^/repertuar(.+) $1 last;
}
location /userfiles{
rewrite ^/userfiles(.+) $1 last;
}
location /storage{
rewrite ^/storage(.+) $1 last;
}

Вообще rewrite использовать в nginx тоже не рекомендуется
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@bamond
location ~* ^/(repertuar|userfiles|storage|abonement|media|photogallery) {
rewrite ^ http://www.site.ru$request_uri? permanent;

}

долно быть примерно так.. не проверял
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы