先想清楚:蜘蛛手上還握着舊 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 的首次抓取時間與數量,是否随着時間逐步上升;
- 站内連結中被抓取的新地址占比,用来判断内鏈替換是否生效;
- 整体抓取频次有没有明顯下滑,如果下滑,检查是不是跳轉鏈或服務器响應拖慢了节奏。
如果站点体量大,可以按频道分批迁移,每批間隔一两周,確認這一批的抓取已经轉向新地址,再推下一批。這样即便某一批出了問题,也不會牵连全站。
改版迁移本质上是一次抓取路径的重新铺设:舊路径要干净地指向新路径,新路径要能從導航和内容里被反复發現。把這两点做好,剩下的就是给蜘蛛一点時間。