@margon80

Как реализовать перенаправление с отрицанием в nginx?

Есть набор URL следующего содержания:
/category/*.html
/category/*/XXX.html , где * - некая буквенная последовательность, а XXX - число от 1 до 9999
Подскажите пожалуйста, как в nginx правильно написать правило rewrite чтобы все URL вида /category/*.html за исключением URL вида /category/*/XXX.html перенаправлялись на URL /category/*/
  • Вопрос задан
  • 186 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Например так:
location /category/ {
    # если URI заканчивается на XXX.html,
    # то реврайтим в то же самое и прекращаем обработку.
    rewrite "^(.+\d{1,4}\.html)$" $1 break;
    # у всего остального заменяем `.html` на `/`
    rewrite "^(.+)\.html$" $1/;
}


{1,4} можно заменить на + если количество цифр не принципиально.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov
Web developer
все URL вида /category/*.html за исключением URL вида /category/*/XXX.html

/category/[^/]*\.html

P.S.
в буквенной последовательности кроме букв могут встречаться символы слэша, тире и цифры

Тогда /category/*.html ничем не будет отличаться от /category/*/XXX.html
Ответ написан
Ваш ответ на вопрос

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

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