网站收录

301 做了,收录没跟过来:从跳转链排查起

旧 URL 配了 301、浏览器也能正常跳到新页面,但搜索结果里依然是旧地址,新地址迟迟不进索引。问题往往不在跳转本身,而在跳转链长度、301 与 302 的混用、目标页自身的可收录条件,以及 sitemap 和内链是否同步。本文按排查顺序拆开这几环。

网站收录

301 做了,收录没跟过来:从跳转链排查起

改版、换域名或者调整一批 URL 结构之后,最常见的反馈是:跳转已经配好,浏览器访问旧地址也能到新页面,但搜索结果里还是旧 URL,新地址迟迟不出现。这种情况通常不是跳转没生效,而是链路上有一环没走通。

先看跳转是不是一步到位

理想状态是旧 URL 直接 301 到最终目标 URL,中间不再经过第二个地址。但实际环境里链式跳转很常见:http 跳到 https、带 www 跳到不带 www、少一个尾斜杠再跳一次、CDN 层又加一跳。对用户来说结果一样,对抓取来说却是一串连续的跳转。

  • 每多一跳,蜘蛛都要重新发起请求,响应慢的站点上容易中途放弃;
  • 链路上只要有一环返回的是 302、meta refresh 或 JS 跳转,替代关系就可能不被确认;
  • 链路太长时,即使最终页面被抓到,旧 URL 与新 URL 的对应关系也更容易被处理得含糊。

排查方式很直接:用命令行工具或在线检测看完整跳转链,把真正落地的那个 URL 当作目标,其余中间地址尽量合并掉。

301 和 302 别混用

301 表示永久替代,302、307 表示临时。对临时跳转,常见处理方式是保留原 URL,抓取时继续访问旧地址。如果因为调整把旧 URL 长期 302 到新地址,索引里长期保留旧 URL 就不奇怪了。

另一种情况是链路上类型混用:第一跳 301,第二跳 302。这种组合下,替代关系可能只被认到中间那一环,最终目标页反而没有被当作正式版本。

目标页自己是否具备被收录的条件

跳转只是把蜘蛛送过去,能不能进索引还要看目标页本身。常见的坑有:

  • 目标页带着 noindex,或被 robots.txt 屏蔽;
  • 目标页返回 404、500,或者需要登录才能看到内容;
  • 目标页的 canonical 又指向了第三个 URL,等于把收口位置再挪一次;
  • 目标页是筛选页或聚合页,内容单薄,本身就不适合进索引。

这些问题在跳转配置里看不出来,需要单独打开目标页的 HTML 确认 meta robots 和 canonical。链路排查和目标页排查是两件事,不能只做一件。

站点地图和内链也要跟着改

跳转配好之后,如果 sitemap 里列的还是旧 URL、站内链接还指向旧地址,蜘蛛每次抓取都先走一遍跳转。旧 URL 持续获得抓取和内链信号,新 URL 反而没有直接入口,收录推进自然慢。

比较稳妥的做法是同步三件事:sitemap 换成新 URL;导航、面包屑、正文内链指向新 URL;旧 URL 只保留跳转,不再出现在任何列表里。

怎么观察有没有跟过来

可以看服务器日志里目标 URL 的抓取记录:如果它开始被直接访问,而不是经过跳转进来,说明替代关系大致被接受了。旧 URL 从索引里消失通常滞后于抓取,需要一段时间,不必每天盯着看。

推进时尽量一次只改一类变量。跳转链、sitemap、内链、目标页 robots 设置同时大改,出了问题很难判断是哪一环造成的。

跳转解决的是用户能到新地址,收录解决的是搜索引擎认可新地址是正式版本。这两件事相关,但不是同一件事。