在网站死链修复的日志核对中,首先要看的是请求URL、响应状态码、来源页URL(Referer)、User-Agent、请求时间这几类字段。它们能回答三个问题:哪个链接坏了、坏成什么样、是谁在什么页面触发它。缺了其中任何一项,都可能把“已修复”误判成“仍存在”,或把正常跳转误判成死链。适用前提是你能拿到服务器访问日志、CDN日志或爬虫抓取日志中的原始记录;如果只有汇总报表,字段可能已被聚合,需要回到原始日志层核对。
死链不是只有404一种。日志里常见的状态码及其含义需要分开判断:
404:资源不存在,最典型的死链信号。410:资源已永久移除,语义比404更明确。301/302:发生了跳转。301若指向有效页面,属于修复手段;若跳转链过长或终点仍是404,则问题未解决。403:可能是权限或防盗链拦截,不一定是链接失效,需要结合来源页判断。500/502/503:服务端或网关错误,属于临时或配置问题,不能直接当死链处理。因此核对字段时,状态码必须和请求URL成对读取,单独统计“404数量”没有定位价值。
下面这份清单按排查顺序排列,每一项都对应一个具体判断:
/page?id=1和/page可能是两种结果。假设日志中出现一条记录:请求URL为/old-product,状态码404,来源页为/category/list。这里的判断结果是:死链入口在分类列表页,应去该页面修改指向/old-product的链接,而不是只对旧地址做跳转。如果来源页为空或显示为外部域名,则说明是外链或直接访问,处理方式转为设置301跳转到最相关的新页面。
适用条件是来源页字段未被服务器或隐私策略剥离。若Referer普遍为空,可改用站内爬虫工具重新抓取,用抓取结果中的“链接来源”字段替代。
修复动作上线后,不能只看“改过了”,要用日志验证:
404变为301,且跳转终点返回200。404记录。如果修复后仍有404,先检查是否有多个来源页引用同一旧地址,再检查CDN或反向代理是否缓存了旧的404响应。这一步的核对对象仍是日志字段,而不是主观判断。
有两种情况需要特别小心。其一,状态码为200但页面内容是“您访问的页面不存在”,这是软404,日志字段本身不会报错,需要结合页面标题或内容长度人工抽查。其二,状态码为301但跳转目标也是301,形成跳转链,搜索引擎可能放弃跟随,实际效果等同于死链。核对时应把跳转链的每一跳都列出来,确认终点为200。
下一步可以做的,是从日志中导出所有状态码为404和410的请求URL,按来源页分组,优先处理来源页流量高、出现频次多的条目,再逐条验证跳转终点。