O exemplo que você está usando funciona para retornar o conteúdo do arquivo index.html
de um diretório, mas não funcionará para arquivos (por exemplo, http://server/somedir/file
não retornará o conteúdo de /somedir/file.html
).
Uma configuração simplificada, que retornará qualquer arquivo HTML sem sua extensão e , usará index.html
para diretórios da seguinte forma:
server {
listen 80;
server_name mysite.com;
index index.html;
root /var/www/mysite/public;
location / {
try_files $uri $uri/ @htmlext;
}
location ~ \.html$ {
try_files $uri =404;
}
location @htmlext {
rewrite ^(.*)$ $1.html last;
}
}
Como funciona:
- Especificar
index index.html
será o padrão para usar esse arquivo quando os URIs de diretório forem acessados. - Colocar
root
fora do blocolocation
será aplicado em todo o servidor. -
try_files $uri $uri/ @htmlext
procurará uma correspondência exata para um arquivo ou diretório antes de finalmente tentar anexar.html
. -
try_files $uri =404
é para evitar que o Nginx fique preso em um loop de reescrita se não for possível encontrar um arquivo. -
rewrite ^(.*)$ $1.html last
acrescenta.html
e reinicia o processo de correspondência de URI.