
Tengo que reescribir las URL en nginx.conf que contienen parámetros de consulta particulares;
Como ejemplo:-
location /brands/exampleA {
if ($arg_cat = "9") {
return 301 /page/brand-filter;
}
if ($arg_cat = "38") {
return 301 /page/category/brand-filter;
}
}
Estas reescrituras de URL luego se reescribirían example.com/brands/exampleA/?cat=9
hacia example.com/page/brand-filter
y example.com/brands/exampleA/?cat=38
hacia example.com/page/category/brand-filter
.
Y funcionan perfectamente, pero el problema es que rompen todas las demás páginas secundarias del bloque de ubicación, por lo que, por ejemplo, las siguientes páginas no se cargarían con un error de Nginx:
example.com/brands/exampleA/range1
example.com/brands/exampleA/range2
example.com/brands/exampleA/range3
example.com/brands/exampleA/range4
Entonces, ¿hay algo que pueda agregar a la declaración de ubicación para detener cualquier aplicación posterior exampleA
? Estas reescrituras SOLO deben coincidir con los parámetros de consulta ?cat=.
Respuesta1
Su configuración actualmente utiliza unubicación del prefijo, lo que significa que se considera cuando el URI solicitadoempieza conel valor /brands/exampleA
.
Para restringir la coincidencia a un solo URI, utilice elcoincidencia exactasintaxis:
location = /brands/exampleA/ { ... }
Vereste documentopara detalles.