Por que o Nginx está exibindo 'index.html' em vez de um 404?

2

Eu tenho um site onde solicitar um determinado arquivo JSON e encontrá-lo ausente aciona uma solicitação para um arquivo JSON de fallback. No entanto, em vez de obter um 404 para o primeiro arquivo, eu estava obtendo o conteúdo de index.html , que não é um JSON válido e criou um erro.

Eu localizei o problema nesta diretiva:

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
            }

Como posso fazer com que ele atenda um 404 para mysite.com/some/nonexistent/file.json , mas ainda receba index.html para mysite.com/ ?

    
por Nathan Long 11.10.2013 / 14:31

1 resposta

3

Após algumas leituras, alterei a diretiva try_files :

# Old way: fallback to index.html
try_files $uri $uri/ /index.html;

# New way: serve a 404 response
try_files $uri $uri/ =404;

Outra opção seria:

# Fall back to this error page
try_files $uri $uri/ error_pages/404.html

Eu ainda tenho essa diretiva para lidar com a veiculação de index.html para mysite.com/ :

server {
  # ...
  index index.html index.html;
  #...
}
    
por 11.10.2013 / 14:31