Pare as reescritas do Nginx quebrando todas as páginas após o bloco de localização

Pare as reescritas do Nginx quebrando todas as páginas após o bloco de localização

Estou tendo que reescrever URLs em nginx.conf que contêm parâmetros de consulta específicos;

Como um exemplo:-

location /brands/exampleA {

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

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

}

Essas reescritas de URL seriam então reescritas example.com/brands/exampleA/?cat=9para example.com/page/brand-filtere example.com/brands/exampleA/?cat=38para example.com/page/category/brand-filter.

E funcionam perfeitamente, mas o problema é que eles quebram todas as outras páginas filhas do bloco de localização, por exemplo, as páginas a seguir não seriam carregadas com um erro Nginx: -

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

Então, há algo que eu possa adicionar à declaração de localização para impedir que qualquer coisa se aplique a qualquer coisa depois exampleA- essas reescritas devem corresponder SOMENTE aos parâmetros de consulta ?cat=.

Responder1

Sua configuração atualmente usa umlocalização do prefixo, o que significa que é considerado quando o URI solicitadocomeça comO valor que /brands/exampleA.

Para restringir a correspondência a apenas um URI, use oCombinação exatasintaxe:

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

Veresse documentopara detalhes.

informação relacionada