面对成千上万条链接,不可能逐条打开验证。死链检测方法中的批量抽样定位,核心思路是:先用规则把可疑链接缩小到可控范围,再按来源、路径和状态码分层抽样,最后用少量样本反推整批链接的健康状况。抽样不是随便挑几条,而是让样本能代表不同页面模板、不同链接来源和不同时间段的链接。下面用一个假设项目说明具体怎么做。
假设某内容站有 5000 个页面,每页平均 30 条内链和 5 条外链,总链接量约 17.5 万条。运营者发现部分页面出现 404,但不知道问题集中在哪。此时若直接全量抓取,耗时可能超过一天,且容易触发目标站限流。可以先把链接按来源分类:导航、正文内链、侧栏推荐、页脚、外链。再按路径分类:文章页、栏目页、标签页、分页。抽样时从每个交叉分类中按比例抽取,而不是只查首页链接。
假设第一轮抽取 200 条链接,发现 12 条 404,其中 9 条来自三年前的旧文章正文,2 条来自侧栏推荐,1 条来自页脚。这说明问题主要集中在旧内容,而不是全站模板。下一步可以只针对旧文章批量检查,而不必全站重抓。
常见错误有三种。第一,只抽首页链接,忽略深层页面,导致漏掉大量正文死链。第二,把 301 和 302 当成死链。301 是永久跳转,302 是临时跳转,两者都不等于 404,但过多跳转会影响抓取效率,需要单独统计。第三,用 robots.txt 屏蔽来“移除”死链。robots.txt 只阻止抓取,不能替代 404 处理,也不能保证页面从索引消失。
判断抽样是否有效,看两个指标:样本中 404 的比例与全量预估比例的偏差是否在可接受范围;样本是否覆盖了所有主要模板和链接位置。若偏差超过 10%,说明分层不合理,需要重新按模板或路径调整抽样比例。
先导出最近一个月的访问日志,筛出状态码为 404 和 500 的请求,按来源页面分组。然后对每组抽取 10 条链接,用 curl -I 或浏览器开发者工具核对最终状态码。把确认的死链按来源和路径记录到表格,优先修复导航、页脚和正文内链中的 404,再处理外链。修复后重新抽取同一批样本,对比状态码变化,确认问题是否收敛。