Как исключить директорию их rewrite (nginx)?

Доброго времени суток. Есть следующий rewrite, всё на без слэш кроме POST.
if ($request_method != "POST"){
    rewrite ^/(.*)\/$ /$1 permanent;
}

location  / {
    try_files $uri $uri/ /index.php?$args;
    allow 127.0.0.1;
    allow 192.168.0.11
    deny all;
    error_page 403 = @403;
}
location @403 {
keepalive_timeout 0;
return 503;
}

Ребята подскажите как исключить из rewrite location /admin/ ?
  • Вопрос задан
  • 707 просмотров
Решения вопроса 1
@dodo512
Добавить (?!admin/).

rewrite ^/(?!admin/)(.*)/$ /$1 permanent;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Правильнее добавить отдельный локейшен, который бы выполнялся до дефолтного /.

nginx вначале ищет среди всех префиксных location’ов, заданных строками, максимально совпадающий. В вышеприведённой конфигурации указан только один префиксный location “/”, и поскольку он подходит под любой запрос, он и будет использован, если других совпадений не будет найдено. Затем nginx проверяет location’ы, заданные регулярными выражениями, в порядке их следования в конфигурационном файле. При первом же совпадении поиск прекращается и nginx использует совпавший location. Если запросу не соответствует ни одно из регулярных выражений, nginx использует максимально совпавший префиксный location, найденный ранее.

https://nginx.org/ru/docs/http/request_processing.html
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы