Расположение Nginx "не равно" регулярному выражению
Как установить location
условие в Nginx, которое отвечает на все, что не равно перечисленным местоположениям?
пробовал:
location !~/(dir1|file2.php) {
rewrite ^/(.*) http://example.com/ permanent;
}
но это не сработает редирект. Он просто обрабатывает запрошенный URI, используя правила в остальной части конфигурации сервера.
3 ответов
по данным nginx и документация
нет синтаксиса для несоответствия регулярному выражению. Вместо этого сопоставьте целевое регулярное выражение и назначьте пустой блок, а затем используйте location /, чтобы соответствовать чему-либо еще
таким образом, вы можете определить что-то вроде
location ~ (dir1|file2\.php) {
# empty
}
location / {
rewrite ^/(.*) http://example.com/ permanent;
}
Я искал то же самое. и нашел это решение.
используйте отрицательное утверждение regex:
location ~ ^/(?!(favicon\.ico|resources|robots\.txt)) {
.... # your stuff
}
Предположим, у вас есть два места говорят:location1
и location2
, вы можете попробовать следующую конфигурацию блока местоположения, чтобы решить вашу проблему.
location ~ ^/(location1|location2) {
rewrite (.*) http://example.com/ permanent;
}
и комментарии может быть из-за последовательности нескольких блоков местоположения в вашей конфигурации. Пожалуйста, проверьте, если какой-либо из блоков местоположения, который приходит до этого, обслуживает запрос.