← 中文资源

简体中文版本

HTTP 404 Not Found — 路由与部署成因

诊断生产环境中的意外 404:SPA 回退、结尾斜杠、大小写敏感与反向代理路径重写。

阅读英文原文

症状

应用中存在的路径却返回 404,常常只在生产环境出现。客户端路由在刷新时经常 404,因为服务器找不到对应文件。

诊断

对比并在源站测试:

curl -I https://app.example.com/settings   # through proxy
curl -I http://127.0.0.1:3000/settings     # origin

若源站成功而代理 404,则问题出在代理的路径处理。

修复

加入保留 API 路由的 SPA 回退:

location / {
  try_files $uri /index.html;
}
location /api/ {
  proxy_pass http://backend;
}

规范结尾斜杠并严格匹配大小写。

验证

直接请求该失败路径并在刷新后再次请求;两者都返回页面,源站访问日志显示由预期路由处理。