Beenden Sie Nginx-Umschreibungen, die alle Seiten nach dem Standortblock beschädigen

Beenden Sie Nginx-Umschreibungen, die alle Seiten nach dem Standortblock beschädigen

Ich muss URLs in nginx.conf neu schreiben, die bestimmte Abfrageparameter enthalten;

Als Beispiel:-

location /brands/exampleA {

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

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

}

Diese URL-Umschreibungen würden dann example.com/brands/exampleA/?cat=9in example.com/page/brand-filterund example.com/brands/exampleA/?cat=38in umgeschrieben example.com/page/category/brand-filter.

Und diese funktionieren perfekt, aber das Problem besteht darin, dass sie alle anderen untergeordneten Seiten des Standortblocks beschädigen, so dass beispielsweise die folgenden Seiten alle nicht mit einem Nginx-Fehler geladen werden: -

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

Gibt es also etwas, das ich der Standortanweisung hinzufügen kann, um zu verhindern, dass irgendetwas auf irgendetwas Danaches angewendet wird exampleA? Diese Umschreibungen sollten NUR mit den Abfrageparametern ?cat= übereinstimmen.

Antwort1

Ihre Konfiguration verwendet derzeit einePräfixstandort, d. h. es wird berücksichtigt, wenn die angeforderte URIbeginnt mitder Wert /brands/exampleA.

Um die Übereinstimmung auf nur eine URI zu beschränken, verwenden Sie diegenaue ÜbereinstimmungSyntax:

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

Sehendieses Dokumentfür Details.

verwandte Informationen