![Redirecionamento nginx /2013/04/test.html para /test - não funciona](https://rvso.com/image/623652/Redirecionamento%20nginx%20%2F2013%2F04%2Ftest.html%20para%20%2Ftest%20-%20n%C3%A3o%20funciona.png)
Estou ficando louco com isso. Como posso redirecionar um determinado URL /2013/04/test.html
no /test
nginx?
Eu tentei isso: mas não funciona:
server {
location /2013/05/test.html {
return 301 http://$server_name/test;
}
}
Realizei alguns testes - por algum motivo, qualquer URL sem extensão .html na parte location da linha de configuração será redirecionado corretamente, mas assim que coloco .html no local, kaboom, ele para de funcionar.
Alguma ideia de por que é assim? Obrigado!
Responder1
Em vez de ter um bloco de localização para cada redirecionamento, você pode simplesmente adicionar regras de reescrita em um bloco de localização existente:
rewrite /2013/05/test.html http://$server_name/test permanent;
rewrite /2013/05/test2.html http://$server_name/test2 permanent;
Você também pode fazer várias expressões regulares para evitar ter que adicionar uma nova cada vez que um novo 'link permanente' for adicionado.
Responder2
Concordo com Jason Ilicic, usando umregra de reescritaseria provavelmente mais eficiente.
Se você realmente quiser usar obloco de localização, você já tentou usar o modificador "="? Se você tiver vários locais, a lógica de seleção do Nginx pode estar selecionando um diferente do que você espera.
Da documentação do Nginx
using the “=” modifier it is possible to define an exact match of URI and location
então por exemplo
server {
location = /2013/05/test.html {
return 301 http://$server_name/test;
}
}