У меня есть сайт, на котором при запросе определенного файла 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/
?
После некоторого чтения я изменил 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;
#...
}