nginx redirect /2013/04/test.html para / test - não funciona

3

Eu tenho me preocupado com isso. Como posso redirecionar um determinado URL como /2013/04/test.html para /test no nginx?

Eu tentei isso: mas não funciona:

server {
     location /2013/05/test.html {
         return 301 http://$server_name/test;
     }
}

Eu realizei alguns testes - por algum motivo, qualquer url sem extensão .html na parte de localização da linha de configuração será redirecionada corretamente, mas assim que eu colocar o .html no local, o kaboom, ele parará de funcionar .

Alguma idéia do motivo? Obrigada!

    
por Hirvesh 27.12.2013 / 20:31

2 respostas

0

Em vez de ter um bloco de localização para cada redirecionamento, você pode adicionar apenas as regras de reconfiguração em um bloco de local 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 a cada vez que um novo 'perma-link' for adicionado.

    
por 29.01.2014 / 02:55
0

Concordo com Jason Ilicic, usando uma regra de reescrita provavelmente seria mais eficiente.

Se você realmente quiser usar o bloco de localização , já tentou usar o modificador "="? Se você tiver vários locais, a lógica de seleção do Nginx pode estar selecionando uma 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

assim, por exemplo

server {
    location = /2013/05/test.html {
        return 301 http://$server_name/test;
    }
}
    
por 28.06.2014 / 09:33