De acordo com o URL RFC3986 como este
http://example.com/catalog/category/goods/../brand/product.html
convertido por algum UserAgent (curl seria um bom exemplo) para http://example.com/catalog/category/brand/product.html
Como posso obter esse comportamento usando a reescrita do nginx, se meu UserAgent estúpido não puder analisar a URL original da maneira correta?
É sempre possível ou não?
Como eu vejo o nginx normailes URL por padrão. Citação de documentação :
Eu testei e funciona fora da caixa aqui (com proxy_pass), ou você tem algum problema com isso?
Você pode substituir
/./
sequências e/goods/../
sequências por um único arquivo/
. Por exemplo:A
/(?!\.\.)[^/]+/
sequência deve corresponder a qualquer elemento de caminho que não seja outro..
. As reescritas acima são recursivas e emitem 302 respostas até que todas as sequências/./
e/../
sejam removidas corretamente.Alternativamente, o mesmo pode ser obtido usando um redirecionamento interno, colocando instruções dentro de um bloco
rewrite...last
adequado .location
Por exemplo:Nesse caso, a URL exibida na barra de endereços do navegador não será alterada.
Consulte este documento para obter detalhes da
rewrite
diretiva e este link para obter detalhes da declaração de antecipação negativa.