技术与生活 / 一篇记录
try_files:文件不存在,就明确告诉客户端
静态网站可以先检查文件和目录,缺失时明确返回 404。
静态站的资源路径应与磁盘产物建立清晰对应。依次检查文件和目录,再返回明确状态,可以避免缺失脚本被错误地当成首页 HTML 返回。
从一个例子看起
配置片段不是完整配置文件,应放入正确的上下文,并按实际环境调整路径与端口。
location / { try_files $uri $uri/ =404; }
同时测试文件、目录首页和不存在的地址。
排查时再往前走一步
测试一个存在的文件、一个带目录首页的路径和一个不存在路径。若是单页应用,应单独设计前端路由回退,不要把两种站点需求混为一谈。
目录首页依赖 index 设置和实际文件权限。若目录存在但首页不可读,结果可能与文件完全不存在时不同。将路径解析与权限检查分开,可以更快确认具体失败原因。
不要为所有失效路径都回退首页,除非确实是前端路由应用。
参考:Nginx 文档。