站点运营

站点运营:重定向鏈自查,別让蜘蛛在跳轉里绕圈子

重定向本身不是問题,层层叠加的跳轉鏈才是。本文梳理重定向鏈常见的产生场景,给出一套從抓取日誌和爬虫工具入手的自查流程,並說明處理时應遵循的合並與更新原則,帮助站点减少不必要的中間跳轉。

站点运营

站点运营:重定向鏈自查,別让蜘蛛在跳轉里绕圈子

站点改版、換域名、調整栏目路径之後,重定向往往是第一批被加上去的東西。加完之後很少有人回头再看一眼,于是一條本该一站直達的跳轉,慢慢變成了三跳、四跳的鏈條。對普通訪客来说,多等几百毫秒未必有明顯感觉;對搜尋蜘蛛来说,每一次跳轉都是一次額外的請求和一次等待,抓取预算就是這样一点点被磨掉的。

重定向鏈是怎么長出来的

大多數鏈條都不是刻意设計的,而是几次改動叠加的结果。常见的来源有這几類:

  • 換域名时做了 A 到 B 的跳轉,後来又上了 HTTPS,鏈路變成 A 到 B 再到 C;
  • 栏目合並时先跳到舊列表頁,舊列表頁里又留着一條跳新列表頁的規則;
  • 给頁面统一加尾斜杠,而带斜杠的地址本身又被另一條規則處理了一次;
  • 大小寫不统一,同一批地址里既有大寫版本又有小寫版本,各自设了規則;
  • HTTP 到 WWW、WWW 到 HTTPS 的先後顺序没有理顺,中間多出一跳;
  • 临时跳轉被当成永久跳轉長期使用,鏈路一直没人清理。

這些情况單獨看都不算嚴重,問题在于它們會互相叠加。一個几年前做過改版的頁面,今天可能還挂着三條規則。

自查從哪几個入口開始

重定向鏈的排查不需要很复杂的工具,按下面的顺序走一遍,基本能覆盖大部分問题:

  1. 先從抓取日誌里筛出返回 3xx 狀態碼的 URL,按出現次數排序,優先處理高频的那几條;
  2. 用爬虫工具跑一遍全站,導出跳轉路径,重点看两跳以上的鏈條;
  3. 检查站点地图、主導航、正文内鏈里是否仍然直接寫着舊地址,這些位置應该同步更新;
  4. 抽样几條鏈,看响應头里的 Location 字段指向的是中間地址還是最终地址;
  5. 確認 robots.txt 没有意外挡住鏈路中間的某個环节,否則蜘蛛可能连跳轉都走不完。

日誌和工具各看什么

日誌告诉你蜘蛛實际遇到了什么,爬虫工具告诉你理论上存在多少條鏈。两邊對不上是常有的事:有些地址早就没内鏈指向,蜘蛛却因為外鏈或歷史记錄還在訪問;也有些鏈路藏在導航里,工具不跑一遍根本發現不了。把两邊的清單交叉比對,優先級自然就出来了。

處理原則:能一站直達就別分两步

整改时的方向很明确,尽量让每一组跳轉只保留一跳。

  • 把 A 到 B 再到 C 合並成 A 直接到 C,刪除中間那條規則;
  • 站点地图、内鏈、對外發布過的連結同步更新,不要長期依赖跳轉兜底;
  • 确實需要保留的舊地址统一用 301,避免 301、302、307 混用;
  • 不要用 meta refresh 或 JS 跳轉来替代服務端跳轉,蜘蛛對這類跳轉的處理並不稳定;
  • 跳轉鏈上不要串登入驗證、地区選擇這類會打断訪問的环节。

几類容易被漏掉的跳轉

有些跳轉不在源站配置里,翻配置文件是找不到的:

  • CDN 或反向代理层自行添加的跳轉,源站看到的請求已经是處理後的结果;
  • 移動端獨立域名與主站之間的互跳,两條鏈路可能方向還相反;
  • 短連結服務生成的地址,一次轉發背後可能是好几层;
  • 带參數版本和干净版本之間的互跳,容易形成循环。
跳轉本身不是問题,跳轉鏈才是。一條鏈每多一跳,就多一次蜘蛛中途放弃的可能。

把它放進定期巡检清單

重定向鏈不會自己消失,只會随着改動慢慢變長。建议在每次改版、換域名、調整目錄之後的一周内跑一次检查,之後按季度做一次抽样复核。检查的重点不必是全站,抓取日誌里的高频 3xx 地址加上爬虫工具導出的長鏈清單,已经足够覆盖大部分風險。