如何在Nginx中设置一个location
条件来响应与列出的位置不相等的东西?
我试过了:
location !~/(dir1|file2\.php) { rewrite ^/(.*) http://example.com/$1 permanent; }
但是它不会触发redirect。 它只是使用其余服务器configuration中的规则来处理请求的URI。
根据nginx文档
没有匹配正则表达式的语法。 相反,匹配目标正则表达式并分配一个空白块,然后使用位置/来匹配其他任何东西
所以你可以定义类似的东西
location ~ (dir1|file2\.php) { # empty } location / { rewrite ^/(.*) http://example.com/$1 permanent; }
我正在寻找相同的。 并找到这个解决方案。
使用负面的正则表达式断言:
location ~ ^/(?!(favicon\.ico|resources|robots\.txt)) { .... # your stuff }
源位置的否定正则表达式
假设你有两个位置,分别是location1
和location2
,你可以尝试下面的位置块配置来解决你的问题。
location ~ ^/(location1|location2) { rewrite (.*) http://example.com/$1 permanent; }
此外,您面临的问题可能是由于您的配置中的多个位置块的顺序。 请检查,如果在此之前的任何位置块,服务请求。