ロケーションブロックに続くすべてのページを壊す Nginx の書き換えを停止します

ロケーションブロックに続くすべてのページを壊す Nginx の書き換えを停止します

特定のクエリ パラメータを含む nginx.conf 内の URL を書き換える必要があります。

例:-

location /brands/exampleA {

    if ($arg_cat = "9") {
        return 301 /page/brand-filter;
    }

    if ($arg_cat = "38") {
        return 301 /page/category/brand-filter;
    }

}

これらの URL 書き換えにより、およびが にexample.com/brands/exampleA/?cat=9書き換えられます。example.com/page/brand-filterexample.com/brands/exampleA/?cat=38example.com/page/category/brand-filter

これらは完璧に動作しますが、問題は、ロケーション ブロックの他のすべての子ページが壊れることです。たとえば、次のページはすべて Nginx エラーで読み込まれません。

example.com/brands/exampleA/range1
example.com/brands/exampleA/range2
example.com/brands/exampleA/range3
example.com/brands/exampleA/range4

したがって、location ステートメントに何かを追加して、それ以降の何かに適用されないようにすることはできますかexampleA? これらの書き換えは、?cat= クエリ パラメータのみに一致する必要があります。

答え1

現在、設定ではプレフィックスの場所、つまり、要求されたURIが始まる/brands/exampleA

一致を1つのURIのみに制限するには、完全に一致構文:

location = /brands/exampleA/ { ... }

見るこのドキュメント詳細については。

関連情報