Nginx: não permitir index.html na URL

1

Estamos gerando um site que consiste em apenas arquivos estáticos (usando Assemble ).

Tendo a extensão .html em URLs parece tão noventa, então geramos cada arquivo HTML estático em seu próprio diretório e chamamos de index.html. Por exemplo, o link da url está no arquivo /var/www/foo/bar/index.html .

Isso funciona bem, mas há uma coisa pequena me importunando: agora há duas URLs possíveis para o mesmo recurso:

  1. link (barra de URL)
  2. link (index.html URL)

Por acidente, alguém pode se vincular ao index.html formulário da URL, o que é ruim para SEO e parece feio (lembre-se dos anos noventa?).

É possível no Nginx dar um erro 404 no URL index.html, mas veicular o URL da barra?

Eu tentei isso:

location ~ /index\.html$ {
    return 404;
}

Mas parece que o Nginx faz uma reescrita interna do URL slash para o URL index.html e, em seguida, corresponde a esse local para que possamos obter um 404 mesmo no URL da barra.

Note que, para detectar erros, queremos que URLs index.html sejam um erro , e não apenas um redirecionamento para o URL da barra.

    
por Martin Vilcans 23.10.2013 / 11:52

1 resposta

0

Existe um redirecionamento interno para index.html, pois é o padrão index ; a solicitação / redireciona para /index.html , que está configurado para retornar 404.

Você pode verificar a documentação do ngx_http_index_module para obter um melhor entendimento. Seu caso está documentado.

Uma abordagem para o seu problema seria renomear todos os index.html para foo.bar e adicionar esse nome de arquivo como padrão index

location / {
    index foo.bar;
}
    
por 23.10.2013 / 12:45