死链接检测:改版或迁移时应核对什么

📍 WDQWDWQD987AAAAA:216.73.216.232
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /0823f2f4cecb.html
📄

死链接检测:改版或迁移时应核对什么

改版或迁移时做死链接检测,核心不是只看“有没有404”,而是核对旧URL是否被正确处置、内链和站点地图是否同步更新、以及搜索引擎能否顺畅抓到新地址。最稳妥的做法是:迁移前先建立旧URL清单和映射关系,迁移后对每个旧URL逐一请求,确认返回状态码和跳转目标,再检查站内链接、站点地图和robots.txt是否与新结构一致。

先建立旧URL清单,再决定用301还是保留

改版或迁移前,先把旧站可被抓到的URL整理成一张表,至少包含旧URL、页面主题、是否有对应新页面、计划处理方式。获取清单的方式可以组合使用:从站点地图提取、从服务器访问日志提取、用爬虫工具抓取、以及从站长平台的历史数据中导出。清单越完整,后续漏检越少。

拿到清单后,对每个旧URL做一次判断,常见处理方案有两种:

需要避免的做法是把大量不相关旧URL统一跳转到首页,这会让搜索引擎难以判断新页面与旧页面的对应关系,也会让用户落地后找不到原内容。

逐项核对状态码与跳转链

映射关系确定后,要对每个旧URL实际发起请求,核对返回结果。检查项包括:

  1. 旧URL返回码:期望是301。如果返回302,说明是临时跳转,搜索引擎可能不会把权重传递到新地址;如果返回404或500,说明重定向未生效或服务器配置有误。
  2. 跳转目标:确认Location指向的新URL正确,且新URL本身返回200。要特别检查是否存在跳转链,例如A跳B、B又跳C,链路过长会拖慢抓取并可能丢失信号。
  3. 跳转是否循环:A跳B、B跳A属于配置错误,必须修正。
  4. 参数和大小写:带参数的旧URL、大小写不同的旧URL是否都有对应规则,避免出现只有部分变体被处理的情况。

可以用命令行工具批量请求,例如对一批URL执行 curl -I 查看响应头中的状态码和Location;也可以使用爬虫工具模拟抓取,一次性输出状态码、跳转目标和跳转次数。结果说明什么:如果某个旧URL返回301且目标为200,说明该项通过;如果返回302、404、500或跳转链过长,就需要回到映射表修正规则。

检查站内链接、站点地图与robots.txt是否同步

旧URL处理完,还要核对站内是否仍有指向旧地址的链接。改版后模板、导航、文章正文中的内链如果还指向旧URL,用户和爬虫会先经过一次跳转才能到达新页面,增加无谓消耗。检查方式是用爬虫抓取新站,筛选出所有指向旧域或旧路径的链接,逐条替换为新URL。

站点地图要同步更新为新URL,并确保其中每个地址返回200。站点地图不保证收录,它只是帮助搜索引擎发现地址的辅助文件,因此不能把“已提交站点地图”当作迁移完成的标志。

robots.txt 要确认没有误屏蔽新目录或新URL规则。需要注意,robots.txt 的抓取限制不等于可靠的索引移除:被robots.txt屏蔽的页面仍可能因外部链接出现在搜索结果中,只是搜索引擎无法抓取内容来判断。如果确实要移除旧页面,应结合301、410或页面上的noindex处理,而不是只靠robots.txt。

用可执行清单收尾并观察后续表现

把上面的动作整理成一份迁移核对清单,每项都包含要查什么、怎么查、结果说明什么:

不同搜索引擎对重定向、站点地图和robots.txt的支持与处理方式存在差异,需要分别核查各自的抓取和索引表现。迁移完成后,下一步是持续观察服务器日志中旧URL的请求情况,以及站长平台中的抓取错误和索引状态,发现新的死链接再回到清单中修正。

图1 图2

nginx