我在 nginx 中有以下配置,用于在特定场景中进行重定向。
location /prefix-someurl {
if (condition) {
return 301 $scheme://$host/xyz.html;
}
proxy_pass someValue;
}
在另一个块中有一些像这样的重写规则
location /someurl {
if (condition) {
rewrite ^(.*)abc(.*)$ $1test/abc$2 break;
rewrite ^(.*)someurl/$(.*) $1someurl/test/index.html$2;
}
proxy_pass value;
}
上述配置按预期工作。但是,如果我对后者进行此修改;
location /someurl {
if (condition) {
return 301 $scheme://$host/xyz.html;
}
if (condition) {
rewrite ^(.*)abc(.*)$ $1test/abc$2 break;
rewrite ^(.*)someurl/$(.*) $1someurl/test/index.html$2;
}
proxy_pass value;
}
我在访问时收到太多重定向错误/prefix-someurl
如果我修改/someurl
为以下内容,错误就会消失;
location /someurl {
if (condition) {
return 301 $scheme://$host/xyz.html;
}
proxy_pass value;
}
我不明白为什么修改/someurl
会对产生影响/prefix-someurl
。或者我遗漏了有关 nginx 重写评估的某些内容。如果对此有深入的了解,我将不胜感激。