![为什么 Nginx 提供“index.html”而不是 404?](https://linux22.com/image/619237/%E4%B8%BA%E4%BB%80%E4%B9%88%20Nginx%20%E6%8F%90%E4%BE%9B%E2%80%9Cindex.html%E2%80%9D%E8%80%8C%E4%B8%8D%E6%98%AF%20404%EF%BC%9F.png)
我有一个网站,请求某个 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;
}
我怎样才能让它为 服务404
,mysite.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;
#...
}