
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=9
in example.com/page/brand-filter
und example.com/brands/exampleA/?cat=38
in 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.