改版时,蜘蛛看到的是两套并存的地址
站点改版、换域名、调整目录层级,本质上都不是“页面换了皮”,而是蜘蛛原本熟悉的那套 URL 发现路径被打断了。旧地址还在被外部链接指向、还在 Sitemap 里、还在用户收藏夹里,新地址则需要重新被内链和 Sitemap 推出去。这两套地址会在一段时间里同时存在,蜘蛛的抓取分布也会随之变化。
所以迁移期的目标不是“越快换完越好”,而是让旧地址始终有新地址可去,让新地址尽快被链接到。
迁移期大致会经过四个阶段
- 旧路径仍在被抓:蜘蛛按历史记录回来,看到的是 301 还是 404,决定了它接下来能不能走到新地址。
- 重定向被跟随:如果 301 指向明确,蜘蛛会顺着跳到新 URL,并把它放进待抓队列。
- 新路径完成替换:内链、导航、Sitemap 逐步指向新地址,新 URL 的抓取量开始上升。
- 旧路径淡出:旧 URL 的抓取频次下降,最终只在外链和历史记录里出现。
这四个阶段并不是依次完成的,而是大量重叠。旧路径淡出的速度,往往取决于外部链接和用户访问的更新速度,而不是你改了多少模板。
旧 URL 必须仍然可访问,哪怕只是为了让蜘蛛看到 301
最常见的失误,是改版后用 robots.txt 屏蔽旧目录,或者直接把旧目录删掉返回 404。前者让蜘蛛连 301 都看不到,后者让已经积累的链接全部变成死路。两种做法都会拖慢新地址被发现的速度。
- 保留旧路径至少一个完整的观察周期,能访问、能返回 301;
- 不要用 noindex 代替 301,也不要给重定向的目标页加 noindex;
- 旧 Sitemap 可以先保留一段时间,再逐步替换为新 Sitemap。
重定向链越长,蜘蛛走完这段路越慢
一条 301 是可以接受的,一条 A→B→C→D 的链就不是了。每多一跳,蜘蛛就多一次请求,也多一个可能失败的环节。改版时建议把映射关系整理成一张表,逐条直接跳到最终地址,避免中间层。
能用一次 301 解决的问题,不要用两次。能把映射提前写在配置里,就不要等到日志里出现 404 再补。
另外,302 和 JS 跳转在发现路径上的表现不如 301 直接,迁移场景尽量用 301。
内链和 Sitemap 的切换顺序
蜘蛛发现新 URL 的主要途径还是内链。改版后,导航、面包屑、正文里的相关链接、分页这些位置应该尽快指向新地址,而不是等它自己从 301 里慢慢爬过去。
- 先切导航和手写推荐位,这些位置抓取频次最高;
- 再切正文内链和列表页模板;
- Sitemap 同步更新,旧地址如果仍返回 301,可以暂时保留在其中;
- 最后清理站内指向旧地址的残留链接。
日志里值得盯的几个信号
- 301 与 404 的比例:404 突然升高,多半是映射表漏了规则;
- 新 URL 的首次抓取时间:长时间没有被抓,通常是内链还没切过来;
- 旧 URL 的抓取频次曲线:缓慢下降是正常的,断崖式下跌往往意味着被屏蔽或整站不可访问;
- 5xx 与超时:改版期间服务器压力偏大,抓取失败会同时拖慢新旧两边的发现。
迁移期尽量不要做的事
- 一次性把全站 URL 全部换掉,让内链和 Sitemap 同时指向尚未验证的新路径;
- 用 robots.txt 屏蔽旧目录,指望蜘蛛“自然切换”;
- 把 301 全部指向首页,让所有旧地址都失去对应关系。
迁移期的节奏,本质上是让蜘蛛在“旧地址还能走、新地址已经通”的状态下完成替换。把映射做全、把 301 做直、把内链先切到高频位置,剩下的就交给时间。