Nginx の書き換えと戻りが別のロケーション ブロックに干渉する

Nginx の書き換えと戻りが別のロケーション ブロックに干渉する

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

関連情報