蜘蛛抓取一個地址时,如果服務器返回的是 301 或 302,它需要再發一次請求才能拿到真正的内容。一两次還能接受,但如果一個頁面要连跳三五次才落地,抓取预算和响應時間都會被白白吃掉。重定向鏈自查,就是把這根接力棒捋直,让蜘蛛一步到位。
重定向鏈是怎么形成的
多數站点並不是一開始就设計成要跳好几跳的。常见的情况是:網站從 HTTP 升級到 HTTPS,又补上了 www 前缀,後来又換了域名或目錄结构,每次變更都叠加一條規則,舊規則没有清理,于是 A 到 B、B 到 C、C 到 D 的鏈條就出現了。單看每一跳都合理,串起来就變成了浪費。
常见的鏈條来源
- HTTP 到 HTTPS、再到带 www 的域名,两條規則各跳一次。
- 改版後舊地址指向過渡地址,過渡地址又指向新地址。
- CMS 或插件自動生成带斜杠、不带斜杠的跳轉,與服務器規則叠加。
- 移動端與 PC 端互相跳轉,逻辑寫错形成往返甚至循环。
- 跳轉目标本身已经失效,鏈條最後一跳落在空頁面上。
自查方法
單個地址快速驗證
用命令行工具带上跟随跳轉的參數請求一次,观察每一跳的狀態碼和 Location 头,能立刻看出鏈長和终点。浏览器的開發者工具里把保留日誌打開,再看 Network 面板,同样能看到完整過程。
全站批量排查
把站点地图里的 URL、日誌里被频繁抓取的 URL、以及内鏈中出現過的地址導出来,批量跑一遍,重点看三類:跳轉次數超過一次、跳轉终点是 4xx、跳轉终点又跳回自身。這三類的處理優先級最高。
修复思路
- 确定每個资源的最终地址,把跳轉規則改成一步直達,中間环节全部去掉。
- 站内連結、導航、站点地图、canonical 一律寫最终地址,不再指向會跳轉的舊地址。
- 合並重复規則,HTTP 到 HTTPS 與 www 归一可以放在同一條規則里處理。
- 跳轉终点失效的,要么恢复到有效頁面,要么直接返回 410 或 404,別让蜘蛛繼續跟。
- 短期活動、临时迁移用 302,長期變更统一用 301 或 308,不要長期挂着 302。
判断标准很简單:從任何一個站内入口点進去,到最终頁面的跳轉次數應该是 0 或 1 次。超過這個數,基本都能找到可以精简的地方。
容易被忽略的细节
- meta refresh 和 JS 跳轉對蜘蛛来说不如服務端 301 明确,能改就改。
- 跳轉时把參數整段吞掉,可能让原本獨立的頁面合並成同一個地址。
- 大小寫、末尾斜杠的規范化跳轉如果不统一,會在日誌里反复出現。
- CDN、反向代理层也可能自带跳轉規則,要和源站規則放在一起看。
把检查變成习惯
改版、換域名、調服務器配置之後,重新跑一遍重定向检查,把结果和上一次對比。鏈條往往不是一次冒出来的,而是每次小改動慢慢叠上去的。定期清理之後,蜘蛛的每次請求才更可能落在真實内容上。