Nginx的位置“不等于”正则expression式

如何在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 } 

源位置的否定正则表达式

假设你有两个位置,分别是location1location2 ,你可以尝试下面的位置块配置来解决你的问题。

  location ~ ^/(location1|location2) { rewrite (.*) http://example.com/$1 permanent; } 

此外,您面临的问题可能是由于您的配置中的多个位置块的顺序。 请检查,如果在此之前的任何位置块,服务请求。