Detenga las reescrituras de Nginx rompiendo todas las páginas después del bloque de ubicación

Detenga las reescrituras de Nginx rompiendo todas las páginas después del bloque de ubicación

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

información relacionada