为什么 Nginx 提供“index.html”而不是 404?

为什么 Nginx 提供“index.html”而不是 404?

我有一个网站,请求某个 JSON 文件时发现缺少该文件,会触发对后备 JSON 文件的请求。但是,我得到的不是第一个文件的 404,而是 的内容index.html,这不是有效的 JSON,因此产生了错误。

我把问题追溯到这个指令:

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

我怎样才能让它为 服务404mysite.com/some/nonexistent/file.json但仍然index.html获得mysite.com/

答案1

经过一番阅读,我改变了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;

另一个选择是:

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

我仍有这个指令来处理index.html以下服务mysite.com/

server {
  # ...
  index index.html index.html;
  #...
}

相关内容