当页面数量从几十页增长到几千页,继续用浏览器逐页点击、手工记录失效链接,问题不在于“做得慢”,而在于覆盖面会失真:你只能看到自己点过的路径,看不到日志里真实被请求的地址,也无法稳定区分一次 404 是内容已删除、URL 改版漏配,还是外部引用写错。此时应把手工动作收缩为“定义规则和抽样验证”,把批量发现、去重、分类交给可重复的流程。
缺少完整日志或后台权限时,仍可执行一个最小动作:以站点地图或栏目列表为起点,抽取其中一层或两层页面,检查站内链接的返回状态。这个动作能回答“已收录的导航路径里有没有明显断链”,但不能推出“全站失效链接已找全”,因为未被站点地图覆盖的旧 URL、外部引用的深层地址、参数化地址都不在其中。
如果只有页面导出表而没有服务器日志,可以把导出表按 URL 结构分组,优先检查目录层级变化前后的地址。若连导出表也没有,只能从首页和主要栏目入口做有限深度抓取。这个阶段的结论应写成“在已获取的入口范围内发现若干断链”,而不是“站点断链率是多少”。
第一件是重复发现。同一目标地址可能被导航、正文、页脚、外部站点多次引用,手工记录会把一次断链记成多条待办,修复时反复确认同一目标。第二件是状态判断。页面返回 200 不代表链接有效,可能跳转到无关内容;返回 404 也不一定都要修,已下线且无替代内容的页面可以保留为 410 或正常 404。第三件是变更追踪。改版或批量替换 URL 后,手工清单很快过期,无法说明哪些是新增断链、哪些是历史遗留。
可区分的证据是:如果同一目标地址在多个来源中反复出现,且修复后仍被再次报告,说明缺少去重和状态回写;如果每次检查结果差异很大,说明缺少固定快照或抓取范围定义,而不是断链本身在剧烈变化。
以一个栏目页为例,先记录它的规范地址、当前返回状态、页面内所有站内链接的目标地址,以及这些目标地址是否在站点地图中出现。接着按目标地址去重,标注每个目标的来源页面和引用类型(导航、正文、页脚)。然后只对“来源重要且目标已失效”的条目安排处理:能恢复内容就恢复,不能恢复就指向最接近的替代页面,确实无替代则保留失效状态并确认不会被主要导航引用。
这个动作的结果会直接影响下一步:如果去重后待处理条目很少,说明问题集中在少数模板或栏目,可先修模板;如果待处理条目分散且来源多为正文,说明需要按内容批次处理,而不是继续逐页点击。
抽样应覆盖不同模板和不同深度,而不是只抽首页附近页面。可以按栏目各取若干页,再按 URL 生成时间或目录层级各取若干页,记录每页的站内链接状态。若抽样中失效链接集中在某一类模板,只能说明该模板值得优先检查,不能说明其他模板没有问题。
另外,请求量或抓取量下降不能单独证明失效链接处理正确,也可能是抓取预算调整、站点整体流量变化或外部引用减少。要判断处理是否有效,应比较同一批目标地址在修复前后的状态,而不是只看总量。
如果站点页面少、更新频率低、主要入口固定,手工检查加表格记录仍然成立,前提是每次检查都记录检查范围和日期。如果页面数量持续增加、存在多个模板、改版频繁,或需要区分站内与外部引用,手工方式就不再适合作为主要手段。此时可保留手工做规则制定和结果抽验,批量发现与去重交给脚本或抓取工具,并明确每次输出的字段:来源地址、目标地址、状态码、引用类型、处理决定。
把“失效链接排查”从点击动作变成可重复的清单流程后,你才能在下一次改版时复用同一套判断依据,而不是重新从首页点起。