改版时,蜘蛛看到的是两套並存的地址
站点改版、換域名、調整目錄层級,本质上都不是“頁面換了皮”,而是蜘蛛原本熟悉的那套 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 做直、把内鏈先切到高频位置,剩下的就交给時間。