
特定のシナリオでリダイレクトするために、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 書き換え評価に関して何か見落としているのでしょうか。この点についてご意見をいただければ幸いです。