确定影响范围的核心动作是:把“异常”拆成可观测的信号,再按入口、路径、设备、时间四个维度交叉比对。先看自定义404错误页本身是否返回了错误的HTTP状态码,再看哪些URL、哪些来源、哪些时间段集中触发异常。不要一上来就改模板或改服务器配置,那样只会把问题掩盖掉。
自定义404错误页的“异常”通常有三类表现:一是本该返回404的URL返回了200,造成软404;二是本该显示自定义内容的页面返回了5xx;三是页面能打开但内容错乱、跳转错误或静态资源加载失败。三类问题的排查起点不同。
curl -I请求一个不存在的URL,观察返回的是404、200还是500。如果返回200,说明服务器或应用把错误页当成了正常页面,搜索引擎可能把大量无效URL当作可索引内容。判断结果:如果curl -I返回404且页面内容正常,说明自定义404错误页本身没有故障,问题可能在别处,比如监控误报或某个特定入口的跳转逻辑。
日志是确定影响范围最直接的依据。重点看三个字段:请求URL、状态码、时间戳。把状态码为404的请求按URL前缀分组,观察是集中在某个目录,还是分散在全站。
可以执行的操作:从Web服务器访问日志中筛选状态码为404的记录,按小时统计数量。如果某个小时404数量突然上升,再对比该时段的请求来源和User-Agent。假设某站点在部署新版本后,/old-path/下所有URL的404数量从每天几十条涨到几千条,而其他路径没有变化,那么影响范围就可以先圈定在这个目录及其下游链接。
监控指标方面,关注自定义404错误页的响应时间、5xx比例和页面浏览量。如果404页面的响应时间从200毫秒涨到5秒,说明错误页处理逻辑可能拖慢了服务器,影响范围会从“错误页本身”扩大到“所有经过该处理流程的请求”。
看到404数量上升,可能的原因有:链接改版后旧URL未做重定向、站点地图或内链指向了不存在的地址、爬虫抓取了带参数的无效URL、CDN回源配置错误。这些是可能原因,不是已经定位的原因。
要定位原因,需要做对照检查:
判断结果:如果某个URL在站内链接中大量存在,且服务器确实没有对应资源,那么影响范围是“所有引用该链接的页面”;如果只是外部随机链接导致,影响范围通常局限于少数入口,优先处理高流量来源即可。
确定影响范围后,处理顺序取决于代价和收益。影响面大、修复成本低的问题先做。例如,旧目录整体404,可以用一条重写规则把旧路径映射到新路径,代价小、覆盖广。如果只是个别外部链接失效,单独做301重定向的收益有限,可以放在后面。
需要比较的条件包括:受影响URL的数量、这些URL是否还有搜索流量或外部链接、修复是否需要改动应用代码、修复后是否会影响其他正常路径。如果自定义404错误页本身返回200,优先修正状态码,因为软404会干扰搜索引擎对站点结构的判断。
下一步:从访问日志中导出最近24小时状态码为404的URL列表,按目录分组统计数量,先找出占比最高的一个目录,再决定是加重定向规则还是修正内链。