regex nginx удалить косые черты не относится к 2 папкам? - PullRequest
0 голосов
/ 11 мая 2018

Мы хотим, чтобы nginx перенаправлял URL-адреса с косой чертой в конец.мы нашли: https://www.scalescale.com/tips/nginx/nginx-remove-trailing-slash/

Итак, мы добавили:

rewrite ^/(.*)/$ /$ permanent;

В nginx, но проблема в том, что он не должен применяться к некоторым папкам.Итак, мы нашли: удалить косую черту в nginx, при этом некоторые определенные случаи игнорировались

, и мы изменили его на:

rewrite ^/(?!admin)(.*)/$ /$ permanent;

, но тогда сервер не запустится:

invalid number of arguments in "rewrite" directive in /opt/www/folder/.nginx:5

И: мы хотим исключить 2 папки.Что такое правильное регулярное выражение для исключения папок из правила перезаписи?

Спасибо,

Барт

Редактировать для тех, кто приходит сюда по Google:

ответ работает ... странно только то, что стандарт работал без $ 1:

rewrite ^/(.*)/$ /$ permanent;

и теперь мы сделали исключение, он больше не работал без $ 1 .... но это работает длясейчас:

# remove trailing slashes
rewrite ^/(?!folder1|folder2)(.*)/$ /$1 permanent;

1 Ответ

0 голосов
/ 11 мая 2018

Я подозреваю, что это просто опечатка. Это /$ выглядит так, как должно быть /$1:

rewrite ^/(?!admin)(.*)/$ /$1 permanent;

Если вам нужно исключить более одного URI, попробуйте что-то вроде

rewrite ^/(?!admin|secure|raw)(.*)/$ /$1 permanent;

nginx использует ту же библиотеку регулярных выражений, что и Perl, поэтому вы можете протестировать этот материал из командной строки с помощью

perl -ple 's#^/(?!admin|secure|raw)(.*)/$#/$1#'

и просто введите пример URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...