在动手排查HTTP状态码404之前,最需要准备的不是工具,而是一份能说明“谁、在什么条件下、请求了什么、得到了什么响应”的证据清单。缺少这些信息,排查很容易变成反复猜测:可能是链接写错,可能是资源被删除,也可能是服务器或CDN配置把正常请求变成了404。下面按实际排查顺序,说明每类信息的作用、获取方式和判断价值。
同一个404,可能来自源站应用、Web服务器、反向代理或CDN。准备信息时,先记录请求经过的链路:用户从哪个入口访问,是否经过CDN、负载均衡或网关,最终由哪个服务返回响应。判断方法是查看响应头中的 Server、Via、X-Cache 等字段,或直接对比“绕过CDN访问源站”和“通过CDN访问”的结果。如果两者表现不同,问题更可能在中间层;如果一致,则更可能在源站或应用路由。这一步决定了后续该找运维、开发还是内容维护人员。
排查404时,最有价值的是一组可复现的原始记录,而不是一句“页面打不开”。建议准备以下内容:
https://example.com/a/b?x=1,不要只写“那个页面”。Host、User-Agent、Referer、Accept,必要时包括Cookie或鉴权头,但注意脱敏。Content-Type、Location、缓存相关字段和自定义错误标识。这些信息可以用浏览器开发者工具的“网络”面板、curl -I 或服务端访问日志获取。适用条件是问题可复现;如果只是偶发,还需要记录发生频率和涉及的用户范围。
404的常见解释有两类:一类是请求的静态资源确实不存在,例如图片、CSS、JS文件被删除或路径写错;另一类是动态路由没有匹配到对应处理逻辑,例如文章别名变更、参数缺失、重写规则失效。准备信息时,要能回答:这个URL以前是否正常?最近是否改过目录结构、发布流程或路由配置?
判断方法可以做一个最小对比:用同一路径请求一个已知存在的文件,再请求出问题的URL。如果已知文件返回200,而出问题URL返回404,说明服务器和网络基本正常,问题集中在目标资源或路由。如果连已知文件也404,则要检查站点根目录、虚拟主机绑定或重写规则。这里要注意,robots.txt的抓取限制不等于可靠的索引移除,它也不能解释服务器为什么返回404;站点地图不保证收录,同样不能作为404是否正常的依据。
当404无法直接复现,或者只影响部分用户时,日志和变更记录就是关键证据。需要准备:
对比变更时间与404首次出现时间,可以缩小范围。如果404在发布后立即出现,优先检查发布产物和路由配置;如果无明显变更,则检查是否有外部链接指向已删除资源,或爬虫请求了不存在的路径。
准备好上述信息后,可以按以下顺序执行:
curl -I复现请求,确认状态码和响应头,排除浏览器缓存或插件干扰。适用条件是你能拿到至少一组可复现的请求记录。如果完全无法复现,先扩大证据收集范围,记录更多用户环境,而不是直接修改配置。不同搜索引擎对404的处理方式需要分别核查,不要假设一个平台的表现代表所有平台。
下一步,把上面列出的请求URL、响应头、发生时间和最近变更记录整理成一页排查笔记,再按“先复现、再分层、后对比”的顺序逐项验证。