改版、換域名、調整目錄结构,都會让站点在蜘蛛眼里變成“半新半舊”。舊地址還在,新地址刚出現,抓取队列需要用一段時間重新排序。這段時間的表現往往不是抓取量暴跌,而是抓取被摊到两批地址上,真正被重新認识的頁面變少。
蜘蛛先看到什么,再决定抓什么
蜘蛛不會“知道”你改版了。它只會按已有记錄訪問舊地址,再根據响應结果更新認知:
- 舊地址返回 301:蜘蛛记下新地址,後續逐步把抓取轉過去。這是最顺的一條路。
- 舊地址返回 404 或 410:蜘蛛放弃舊地址,但如果没有別的线索指向新地址,它只能從首頁和 Sitemap 重新爬一遍。
- 舊地址被 robots.txt 屏蔽:连 301 都讀不到,跳轉關系等于断掉,新地址的發現會被拖慢。
- 舊地址仍返回 200 的舊内容:两套内容並存,两邊都抓,抓取预算被摊薄。
過渡期第一件要做的事,是让舊地址给出明确信号,而不是让它静默消失。
新 URL 的發現速度取决于线索密度
新地址被發現的快慢,主要看有多少條獨立线索指向它。线索越集中、层級越浅,队列重排得越快。
- 内鏈:導航、面包屑、列表頁是最稳定的入口,改版上线时同步替換,別指望後期再补。
- Sitemap:一次性換成新的 URL 集合,lastmod 反映真實修改時間。舊 Sitemap 如果還留着,會繼續把蜘蛛引向舊地址。
- 舊頁跳轉:301 本身是一條线索,前提是蜘蛛還能抓到舊頁。
- 外鏈:站外連結更新最慢,這部分只能等,反复提交意义不大。
抓取预算的短期再分配
改版後的一段時間里,抓取量通常被三類地址分走:舊地址(去確認跳轉)、新地址(去建立索引),以及改版過程中临时生成的地址。第三類最容易被忽略。上线期間如果冒出带跟踪參數、带會话 ID 的連結,它們會顺理成章地進入抓取队列。
比較稳妥的做法是:上线前清掉临时入口,改版期間减少小范围改動的反复提交,让抓取集中在真正需要被重新認识的頁面上。
让過渡期短一些的几件事
- 301 保留到日誌里舊 URL 的訪問量明顯下降之後再考虑收尾,別急着下掉。
- 不要在 robots.txt 里屏蔽待迁移的舊目錄,那等于把跳轉线索一並封死。
- Sitemap 一次性替換,不要新舊混放。
- 内鏈、導航、面包屑同步更新,避免“新頁没人指向、舊頁一堆入口”的倒挂。
- 分頁、篩選這類容易产生大量地址的模块,改版後確認參數規則没有失控。
判断改版是否顺利,不看蜘蛛当天来了多少次,而看舊地址的抓取占比是否在下降、新地址的抓取占比是否在上升。
用日誌做一次對照
改版上线後的一到两周,把日誌按地址分组看三件事:
- 返回 301 的舊地址是否稳定,404 有没有異常增長。
- 新地址的首次抓取是否集中在少數几個入口,如果是,說明其他线索還没被發現。
- 抓取總量里有多少落在參數頁、搜尋结果頁這類不需要抓的地址上。
這三項比主观判断直接得多。如果新地址的抓取長期集中在首頁一跳,說明内鏈和 Sitemap 的线索還不够密;如果舊地址迟迟不降,就回头检查還有哪些地方在連結舊地址。
改版本质上是让蜘蛛重新学一遍站点的结构。学习需要時間,能做的就是別给它添乱:舊地址给明确跳轉,新地址给稳定入口,剩下的交给抓取节奏自己收敛。