nginx 位置块,不匹配表达式时重定向

nginx 位置块,不匹配表达式时重定向

我们正在从一组形式的位置进行转换:example.com/app1,我们将重定向到/app2。

但是,我们希望保持 a​​pp1 的某些 URI 处于活动状态,例如 example.com/app1/111 和 example.com/app1/222 不应重定向。

应该怎么做?位置块不接受像“!~”这样的前缀,这会让事情变得简单,即,

location !~ /app1/(111|222) {
  rewrite /app1 /app2;
}

在位置模式匹配方面不起作用。

我已经尝试过这个(以及在 /app1/ 之后的所有内容周围加上括号),但它也不起作用:

location ~ /app1/!(111|222) {
  rewrite /app1 /app2;
}

有什么建议吗?

答案1

cmiiw 你可以尝试(请确保顺序正确,你可以尝试更改正则表达式)

location ~ ^/app1/111$ {
  break;
}

location ~ ^/app1/222$ {
  break; 
}

location ~ ^/app1$ {
  rewrite /app1 /app2;
}

相关内容