先想清楚:蜘蛛手上还握着旧 URL
站点改版换掉一批 URL 之后,蜘蛛不会立刻知道新地址。它手里仍然存着旧的抓取队列,会按原来的节奏回访旧 URL。这时候站点给出什么回应,决定了它是把抓取转到新地址,还是把这条路径标记成失效。
旧 URL 的收尾方式
- 单跳 301 到新 URL:蜘蛛跟随一次就拿到新地址,路径最短,是迁移期最省抓取预算的做法。
- 链式跳转:旧 URL 跳到中间页,再跳到新 URL。每一跳都要多消耗一次请求,链条越长,中途被放弃的概率越高。
- 302 或 JS 跳转:302 只是临时信号,蜘蛛可能反复回访旧地址确认;JS 跳转则要先渲染才能拿到新 URL,比服务端跳转慢一拍。
- 旧 URL 继续返回 200:新旧内容同时存在,蜘蛛没有理由放弃旧地址,抓取量会长期分散在两套 URL 上。
如果旧路径下还有大量带参数的地址,建议在服务器层面统一归一到无参数版本,再 301 到新地址,避免迁移期凭空多出一批需要单独处理的 URL。
内链与 Sitemap 的切换顺序
跳转解决的是“找到新地址”,内链解决的是“之后还能持续被发现”。这两件事的切换可以排个先后。
- 先改模板层的链接:主导航、面包屑、列表页卡片、分页。这些位置出现在大量页面上,改一次就能覆盖全站入口。
- 再改正文内容里的站内链接。这部分量大且分散,可以按栏目分批处理,不必一次性全量替换。
- Sitemap 换成新 URL,并去掉旧 URL。新旧混在同一份文件里,会让人难以判断哪套地址才是主版本。
- robots.txt 里对 Sitemap 的引用同步更新,同时确认没有对新目录误加 Disallow。
迁移期最容易忽略的是 canonical:页面已经跳到新地址,但 canonical 还写着旧 URL,等于给蜘蛛两个相反的信号。
三个常见的残留问题
canonical 与跳转方向不一致
新页面 canonical 指向旧 URL,旧 URL 又 301 到新页面,形成闭环。蜘蛛在两套地址之间来回折返,抓取量被白白消耗。
旧目录整体屏蔽
有人为了“清理旧站”,直接在 robots.txt 里 Disallow 掉整个旧目录。这样蜘蛛无法读取跳转规则,新 URL 也就失去了从旧路径迁移过来的机会。屏蔽应该留给确实不希望被抓的路径。
大小写与结尾斜杠
改版后 URL 命名规则变化,容易出现 /Page 和 /page、带斜杠和不带斜杠并存的情况。同一内容对应多个地址,抓取和权重都会被摊薄。改版时最好一次性定好规则,并在服务端做归一处理。
上线之后看什么
迁移效果要看一段时间,不是上线当天就能判断。可以在日志里观察几件事:
- 旧 URL 的状态码分布,301 的比例是否接近全部,是否还残留 200 或 404;
- 新 URL 的首次抓取时间与数量,是否随着时间逐步上升;
- 站内链接中被抓取的新地址占比,用来判断内链替换是否生效;
- 整体抓取频次有没有明显下滑,如果下滑,检查是不是跳转链或服务器响应拖慢了节奏。
如果站点体量大,可以按频道分批迁移,每批间隔一两周,确认这一批的抓取已经转向新地址,再推下一批。这样即便某一批出了问题,也不会牵连全站。
改版迁移本质上是一次抓取路径的重新铺设:旧路径要干净地指向新路径,新路径要能从导航和内容里被反复发现。把这两点做好,剩下的就是给蜘蛛一点时间。