O Nginx está retornando o índice raiz do site em vez de uma 404
resposta para arquivos inexistentes, ou seja, tentando reescrever arquivos que não existem, o que é indesejado. Embora eu veja que o tópico foi respondido aqui , não vejo como isso se aplica à minha configuração e pensei que usar IF
instruções no Nginx é mau ?
O objetivo disso é redirecionar as solicitações /bar.html e /bar/ para /bar. Os dados que estão sendo servidos são de bar.html. Uma solicitação para /bar.random retornará o conteúdo de /index.html do site em vez de um 404. Uma solicitação para um arquivo que não existe deve retornar uma página de erro 404.
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri.html /index.html @extensionless-html =404;
}
rewrite ^(/.+)/$ $1 permanent;
rewrite ^(/.+)\.html$ $1 permanent;
location @extensionless-html {
rewrite ^(.*)$ $1.html last;
}
Eu também tentei o seguinte, que resultou na mesma resposta:
location / {
try_files $uri $uri.html /index.html @extensionless-html =404;
if (-f $request_filename) {
# redirect /foo/ to /foo
rewrite ^(/.+)/$ $1 permanent;
# redirect /foo.html to /foo
rewrite ^(/.+)\.html$ $1 permanent;
}
}
location @extensionless-html {
rewrite ^(.*)$ $1.html last;
}
Com base no feedback, a remoção
index.html
detry_files
permite que os erros 404 funcionem conforme desejado.