Nginx: solicita arquivos sem extensão

1

Como posso solicitar páginas html em um servidor nginx sem a extensão?

Ou seja, example.com/about deve retornar example.com/about.html. Isso deve ser verdade para todas as páginas html.

Eu tenho algo ao longo das linhas:

try_files $uri $uri.html;
index  index.html;

O que funciona, mas visitar example.com/ causa um Forbidden 403:

2015/01/20 19:26:11 [error] 32618#0: *373061 access forbidden by rule

E visitar uma página não existente (example.com/bla) causa um loop de redirecionamento:

2015/01/20 19:26:57 [error] 32620#0: *373065 rewrite or internal redirection cycle while internally redirecting to "/bla.html.html.html.html.html.html.html.html.html.html.html"

atualizado com a configuração completa do nginx:

server {
    listen          [::]:80;
    server_name     example.com;

    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;
    root   /var/www/example/;
    try_files $uri $uri.html /index.html =404;
    index  index.html;
    expires max;
    autoindex off;

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}
    
por Tuinslak 20.01.2015 / 19:28

1 resposta

2

Modifique sua linha try_files para se parecer com o seguinte:

try_files $uri $uri.html /index.html =404;

O motivo pelo qual você está vendo um loop é que try_files forçará um redirecionamento para a última entrada se nenhum local válido for encontrado durante a pesquisa.

Outras leituras e referências: link

    
por 20.01.2015 / 19:49

Tags