重定向鏈是怎么形成的
一個舊地址跳到新地址,本来一次 301 就能完成。但站点经歷多轮改版、換域名、調整栏目之後,跳轉規則常常一层叠一层:http 版本跳到 https,https 再跳到带 www 的版本,带 www 的版本又跳到新的栏目路径。每一次跳轉都是一次獨立請求,用戶和搜尋蜘蛛都得跟着走完全程。
這種鏈條很少是一次改版造成的,更多是每次調整留下一点点。過了两三年回头看,才發現某個老連結要轉三四個弯才落地。
判断标准很简單:一次跳轉能到的地方,不要用两次。鏈條越長,中間任何一环出問题,整條路径就断了。
跳轉鏈叠起来要付什么代價
- 消耗抓取請求:一個 URL 轉三次,蜘蛛要多發三次請求才拿到内容,這部分開销本可以用于真正的内容頁。
- 信号被稀释:外部連結指向的還是最老的那個地址,信号要经過多层轉發才能落到最终頁面。
- 超时與失敗風險變大:每一跳都增加一次網絡往返,任何一环返回 5xx 或寫得不對,整條鏈就断在半路。
- 用戶体驗打折:慢速網絡下,三次跳轉带来的等待是能感觉到的,尤其是移動端。
几種常见的叠加情况
协议與主机名叠加
典型形態是 http://example.com → https://example.com → https://www.example.com。前两跳通常是歷史遗留,服務器和 CDN 上各配了一條規則,谁也不肯删。做法是把規則合並成一條,直接指向最终形態。
栏目改名留下的舊規則
舊栏目 A 跳向 B,後来 B 又改名為 C,新規則加上了,舊規則忘了改,于是 A→B→C。改版时最好在映射表里顺手检查一遍:這條規則的目标 URL 是不是已经是最终地址。
短鏈與跳轉頁
站内短鏈、活動跳轉頁、外鏈中轉頁,本身就是為了跳轉而存在。它們指向的目标一旦變更,中轉頁的配置也要同步更新,否則會形成「短鏈→活動頁→新活動頁」的鏈條。
前端跳轉與 meta refresh
用 JS 或 meta refresh 做的跳轉,蜘蛛需要額外解析和等待,效果不如服務器端的 301 直接。能用服務器規則解决的场景,尽量不要交给前端。
怎么把鏈條筛出来
- 翻服務器日誌里的 301 和 302 记錄,把訪問量靠前的目标地址挑出来,逐個訪問,看它是不是又跳了一次。
- 把全站内鏈、站点地图里出現的 URL 匯總成一份清單,做批量請求,记錄每個地址的跳轉次數和最终落点。
- 對重点 URL 用 curl 跟踪:命令行的 -I 參數加上跟随跳轉,能直接看到整條鏈和每一跳的狀態碼。
- 把结果记錄下来,标注哪些是「一跳直達」、哪些是「多跳」、哪些形成了循环。
處理與收敛原則
- 直達目标:跳轉規則直接指向最终 URL,不要把中間版本当作跳板。
- 该用 301 就用 301:永久性迁移用 301,临时维護才用 302,別長期拿 302 当迁移工具。
- 優先改源头:内鏈、站点地图、外部合作連結指向舊地址的,能更新就更新,跳轉是兜底而不是常態。
- 站点地图只收錄最终 URL,不要放會跳轉的地址。
- 警惕循环:A 跳 B、B 又跳回 A,這種情况蜘蛛會直接放弃,排查时要专门找出来。
把它寫進日常检查
重定向鏈不會自己消失,只會随每次調整越积越多。比較省事的做法是:每次改版或調整栏目时,同步更新跳轉規則,並检查舊規則的落点是否仍然有效;每隔一段時間做一次批量巡检,把多跳的地址收敛成一跳。這件事的收益不會立刻体現在資料上,但能减少蜘蛛在半路上被绕晕的概率,也顺手改善了訪問体驗。