修复死链后,验证响应的核心是重新抓取原失效 URL,检查它返回的状态码、最终跳转目标和页面内容是否与预期一致。对时间和人手有限的团队,优先验证三类链接:站内导航和重要栏目入口、近期流量或点击较多的页面、以及被其他页面大量引用的地址。这三类一旦仍返回错误,对用户和抓取的影响最直接。
死链修复不止一种做法,验证标准也不同:
判断结果的关键是:先明确这条链接的目标状态是哪个,再拿实际响应去对照。目标不明确时,看到 200 也可能只是错误地返回了首页或空白页。
手工逐条打开链接在量小时可行,量稍大就容易漏。可以用命令行工具批量检查,例如假设有一份待验证 URL 列表 urls.txt,逐条输出状态码和最终地址:
while read u; do curl -o /dev/null -s -L -w "%{http_code} %{url_effective} $u\n" "$u"; done < urls.txt
这段命令里的 -L 表示跟随跳转,%{url_effective} 是跳转结束后的最终地址。检查时重点看三件事:
如果站内链接数量大,也可以先用站点爬虫工具抓一遍全站,导出返回 4xx、5xx 和跳转链的清单,再对修复过的部分单独复检。工具只是加快收集,判断标准仍以上面的响应结果为准。
常见的假修复是:原 URL 返回 200,但页面内容是通用首页、空模板或与主题无关的推荐列表。这种情况对用户没有帮助,也不等于原内容恢复。验证时要打开最终页面,确认标题、主体内容与原来的主题是否对应。
还有一种情况是 301 跳到了不相关页面。比如一篇产品说明失效后跳到公司介绍页,状态码和跳转都正常,但用户找不到需要的信息。此时应改跳到主题最接近的页面,或让原地址返回 404 并清理指向它的站内链接。
另外,修复后返回 200 的页面如果被 robots.txt 禁止抓取,搜索引擎仍可能无法读取内容。抓取限制不等于索引移除,也不等于修复完成。验证时可以分别确认:页面本身可访问,且没有被抓取规则挡住。
时间和人手有限时,不必一次验证全部链接。可以按下面的条件排序:
一个可执行的步骤是:先从爬虫结果中筛出所有 4xx、5xx 和跳转链,按“站内入链数量”从高到低排序,取前一批处理;修完后用同一份 URL 列表重新抓取,对比修复前后的状态码和最终地址。只有状态码、最终地址、页面内容三项都符合预期,才标记为已验证。
如果修复方式是改站内链接指向新地址,还要检查旧地址是否仍被其他页面引用。旧地址没有清理干净时,用户仍可能点到失效链接,这时验证对象就不只是原 URL,还包括所有引用它的页面。
先导出最近一次全站抓取中所有非 200 的 URL,按站内入链数量排序,确定本周要处理的清单;对每条链接写明预期状态(200、301 还是 404),修完后用同一条命令或同一份清单复抓一次,逐条对照状态码、最终地址和页面内容,把不符合预期的重新放回待处理列表。