确定404影响范围的核心方法是:把“用户看到的404”与“搜索引擎抓到的404”分开统计,再按URL类型、来源渠道和时间段做交叉比对。先确认404是局部还是全局,再决定是修链接、改配置,还是回滚发布。
同样是返回404,背后的范围差异很大。排查时先归类,避免把一个小问题当成全站故障。
判断依据是抽样而非感觉。从站点地图、导航菜单、外链来源各取若干URL,用curl -I查看HTTP状态码。如果抽样中只有个别返回404,属于单页问题;如果同一目录下多数返回404,属于目录级;如果连首页都返回404,按全站问题处理。
服务器访问日志是最直接的证据。按状态码过滤出404记录,再按以下维度分组统计:
/old-products/下全部失效。如果站点已接入搜索平台的抓取统计,可对照抓取错误报告中的URL数量与日志统计是否一致。注意,robots.txt的抓取限制不等于可靠的索引移除,被robots.txt屏蔽的URL仍可能出现在搜索结果中,因此不能用它来“清理”404。
两边的判断标准不同,需要分别收集证据。
这里存在一个常见误判:把“返回404”等同于“必须301”。如果页面只是临时不可用,返回503更合适;如果内容已永久迁移,才用301指向最接近的新URL。选择哪种处理方式,取决于内容是否还有等价替代页。
按下面顺序操作,每一步都能缩小范围:
curl -I确认状态码,记录哪些返回404。判断结果的标准:如果404集中在变更时间点之后、且集中在同一路径,基本可定位为那次变更导致;如果404分散在多个路径且长期存在,更可能是历史遗留的失效链接,按优先级逐步清理即可。站点地图不保证收录,提交新站点地图也不能直接消除已有的404,它只帮助发现应被抓取的URL。
修复不是改完就结束。重新抓取修复后的URL,确认状态码从404变为200或301;再观察一段时间日志中的404数量是否回落到基线。如果404数量没有下降,检查是否有缓存层仍在返回旧响应,或站内其他页面仍在链接到失效地址。HTTPS不保证安全无漏洞或排名,它和404排查属于不同层面的问题,不要混在一起判断。
下一步:从日志中导出最近七天的404记录,按路径前缀排序,先处理数量最多且带外链的那一组URL。