How do I set a location
condition in Nginx that responds to anything that isn't equal to the listed locations?
I tried:
location !~/(dir1|file2\.php) {
rewrite ^/(.*) http://example.com/$1 permanent;
}
But it doesn't trigger the redirect. It simply handles the requested URI using the rules in the rest of the server configuration.
据nginx的文档
有没有语法不匹配正则表达式。 相反,与目标匹配的正则表达式,并分配一个空块,然后使用位置/匹配其他任何
所以,你可以定义类似
location ~ (dir1|file2\.php) {
# empty
}
location / {
rewrite ^/(.*) http://example.com/$1 permanent;
}
我一直在寻找相同。 发现此解决方案。
使用正则表达式负断言:
location ~ ^/(?!(favicon\.ico|resources|robots\.txt)) {
.... # your stuff
}
来源抵消了位置的正则表达式
正则表达式的说明:
如果网址不符合以下任何路径
example.com/favicon.ico
example.com/resources
example.com/robots.txt
然后,它会去那个位置区块内,将对其进行处理。
假设你有两个位置说, location1
和location2
,你可以尝试以下位置块配置为您解决问题。
location ~ ^/(location1|location2) {
rewrite (.*) http://example.com/$1 permanent;
}
另外你所面临的问题可能是因为多个位置块的配置序列。 请检查,在任何情况下,本之前出现,成为该请求的位置块。