判断404 not found属于哪一层,核心方法是看“谁返回了404、返回给谁、期望结果是什么”。同一个404可能来自源站应用、反向代理或CDN、搜索引擎抓取、站内链接或用户输入。先定位响应链上的发出者,再决定由谁修复、怎样验收,能避免多人协作时把问题推给错误的负责人。
用浏览器开发者工具的Network面板或命令行请求目标URL,记录状态码、响应头和响应体。若状态码为404且响应头带有源站特征,问题通常在应用路由或内容层;若响应头显示CDN或反向代理标识,需要继续判断是边缘节点返回还是回源后返回。对同一URL分别请求HTTP与HTTPS、带与不带尾斜杠、大小写不同的路径,观察哪些组合返回404,可以缩小到路由规则、重写规则或大小写敏感这几类原因。
需要区分“可能原因”和“已定位原因”。看到404只说明服务端明确表示资源不存在,不能直接断定是页面被删除、链接写错还是路由配置遗漏。只有拿到请求日志、回源日志或应用路由表后,才能把某一项写成已确认原因。
多人协作时,先约定交付物:一份可复现的请求记录、一份受影响URL清单、一份修复说明和一份验收结果。缺少其中任何一项,后续验收都会返工。可以按下面的清单分派:
责任划分的依据是“谁能让这个URL返回期望结果”,而不是“谁先看到404”。如果应用路由中没有该路径,责任在应用侧;如果应用能返回200但经过代理后变成404,责任在代理或CDN配置侧;如果只是某条站内链接写错,责任在链接维护方。
同样表现为“打不开”,不同状态码指向不同层。200表示资源正常返回;301或302表示发生了跳转,需要检查跳转目标是否再次404;404表示资源不存在;410表示资源已永久移除;500表示服务端处理出错。若浏览器看到404但命令行请求返回200,可能是前端路由接管了显示,真实请求并未到达服务端,此时应检查前端路由的兜底规则。
判断是否影响搜索引擎时,要分开核查。robots.txt中的抓取限制不等于可靠的索引移除,被限制抓取的URL仍可能因外部链接出现在结果中;站点地图不保证收录,提交后仍需观察抓取与索引状态。不同搜索引擎的支持和反馈方式需要分别核查,不能用一个平台的结果推断另一个平台。
假设某团队发现一个产品页返回404,应用日志显示该路径从未注册,而代理日志显示请求已正常回源。此时可以定位为应用路由缺失,而不是CDN故障。若应用日志显示该路径返回200,但外部请求仍得到404,则需要继续检查代理重写规则和缓存。这个例子只用于说明判断顺序,不代表真实项目结果。
下一步:把当前受影响的URL整理成清单,为每条记录补上期望状态码和责任人,再按上面的顺序逐条验证,确认问题层之后再提交修复。