大多數抓取優化都在讨论怎么让蜘蛛發現新 URL,但一個站点每天也在产生“退役”的地址:内容下架、頁面合並、栏目改版、商品停售。這些舊地址如果處理得含糊,蜘蛛會反复回来確認,把本该用在有效頁面上的抓取次數耗在一堆死胡同里。
先分清是哪種“消失”
處理方式取决于舊 URL 属于哪一類,判断错了後面全是补救。
- 彻底不要了:内容不再發布,也不會以別的形式出現。
- 換了地址:内容還在,只是 URL 變了,比如目錄结构調整。
- 合並到別處:两篇内容合成一篇,舊頁不再單獨存在。
- 暂时下架:可能過段時間恢复,比如缺货頁、季节性栏目。
前三類都應该让舊 URL 從抓取队列里逐步登出,第四類則需要單獨考虑是否值得保留入口。
彻底刪除:404 與 410 的取舍
服務器對不存在的地址返回 404,是最常见的做法,蜘蛛會把它记為“不可用”,並在之後一段時間里降低回訪频率。410 表達的是“永久刪除”,语义更明确,理论上能让蜘蛛更快停止回訪;但它不是必须的,也不是所有站点都方便配置。選哪個取决于你的技術條件,關键是不要返回 200。用 200 狀態碼返回一個“内容不存在”的友好提示頁,就是典型的软 404,蜘蛛會把它当成正常頁面繼續抓取、繼續复查,等于把一個已经没用的地址長期留在抓取队列里。
改址:301 最好一步到位
内容換地址时,301 是让蜘蛛把舊地址的抓取习惯轉移到新地址的常規手段。需要留意跳轉鏈條:A → B → C 這種多級跳轉,會让蜘蛛每多走一跳就多一次請求,鏈條越長,抵達终点的時間越晚。改版时如果最终地址已经确定,尽量让舊地址直接指向终点,而不是先指向一個過渡頁。
临时性調整用 302 更合适,但不要長期挂着 302 又指望新地址被当成正式版本。狀態碼和真實意图不一致,蜘蛛的後續判断也會跟着摇摆。
让站内的入口同步消失
頁面上的内容删掉了,但導航、侧栏、标簽聚合頁、相關推荐、XML Sitemap、RSS 里還留着舊連結,蜘蛛仍然能從這些路径走到舊 URL。收尾时值得逐項過一遍:
- 全站導航與頁脚中的栏目連結;
- 文章正文内的連結與推荐位;
- 标簽頁、归档頁、搜尋结果頁里的残留條目;
- XML Sitemap 與各類订阅源;
- 结构化資料或自定义字段里寫死的 URL。
Sitemap 尤其容易被忽略:它是给蜘蛛的候選清單,里面如果長期存在已经 404 的地址,既没有正面作用,也會让蜘蛛對清單的准确性打折扣。
合並内容时的額外動作
把两篇内容合並成一篇,除了给舊 URL 做 301,還要確認新頁面确實包含了舊頁面的核心信息。如果只是把舊地址跳到一個泛泛的栏目頁,用戶和蜘蛛都會觉得落空。合並後的新頁在标题、正文结构和内鏈上做一次梳理,让它能同时承接两個舊地址带来的訪問。
有些頁面不该删,但也不该被索引
内部搜尋结果頁、带大量參數的篩選頁往往属于這一類。用 noindex 是常见選擇,但要清楚它仍然會被抓取——noindex 的意思是“可以抓、不要收錄”,不是“別来”。如果這類頁面數量很大,更彻底的做法是配合 robots.txt 限制路径,或者干脆让它們返回 404。
看收尾是否真的完成
可以在服務器日誌里观察舊 URL 的返回碼分布,检查它們是否已经從 200 變成 404、410 或 301;再看這些地址的訪問频率是否在几周内逐步下降。如果某個舊地址一直保持稳定訪問量,通常意味着站内還有入口没清理干净,蜘蛛是顺着連結找過来的,而不是凭记忆回訪。
URL 的登出和進入同样重要。让该消失的地址干净地消失,抓取次數才會集中在真正需要被發現的頁面上。