站点改版、換程序、合並栏目之後,最容易留下的痕迹不是死鏈,而是层层叠叠的跳轉。一個地址被訪問时先跳到舊目錄,再跳到临时地址,最後才落到真正的頁面上——對訪客来说只是慢一点,對搜尋蜘蛛来说,這條路径的每一步都要單獨走完。
跳轉鏈通常是怎么堆起来的
單次跳轉往往是正常操作,問题出在没人清理中間环节。常见的叠加方式有几種:
- http 先跳到 https,再补 www,然後又补一個末尾斜杠;
- 老栏目 A 整体跳到新栏目 B,新栏目 B 後来又拆成 B1、B2;
- 為了統計点击,先经過一個跳轉脚本再進入正文頁;
- 大小寫混用的路径各自寫了一條跳轉規則;
- 移動端與桌面端互相跳轉,落地地址始终没有固定下来。
搜尋蜘蛛顺着跳轉走时,發生了什么
發現一個 URL 之後,蜘蛛請求的是這個地址本身。如果返回 3xx,它會记下目标地址,再發起一次請求。于是:
- 每個中間环节都占用一次抓取額度,鏈條越長,真正落到内容頁的机會越少;
- 层數較多时,蜘蛛可能只走前几跳就返回,目标頁面進入待抓队列的時間被推後;
- 302、303、307 這類临时跳轉,通常不被当作地址迁移信号,舊地址仍可能被反复訪問;
- 鏈條中只要有一环返回 404 或超时,整條路径就断在這里。
跳轉本身不會让頁面消失,但會让 URL 發現這件事變得更慢、更不确定。
一跳直達和五跳绕行,差別落在哪里
如果 A 直接 301 到 C,蜘蛛一次請求就能確認最终地址,之後 A 基本登出抓取视野;如果 A→B→C→D 层层跳,A、B、C 都會長期出現在日誌里,最终地址的抓取频次取决于鏈條走通的程度。這正是不少站点日誌里“舊地址一直在被抓、新地址却抓得很少”的原因之一。
哪些跳轉還算可控,哪些需要尽快處理
- 可接受:單一 301 從舊地址指向最终地址,且最终地址返回 200;
- 需要观察:http 到 https、补 www 的归一,各一跳,規則统一;
- 需要處理:301 與 302 混用、跳轉脚本參與、同一入口出現两條以上鏈式跳轉;
- 容易出問题:跳轉目标是 404、跳轉到需登入頁面、跳轉目标又跳回原地址形成循环。
一份可执行的排查清單
- 在服務器日誌或抓取工具结果里,筛出返回 3xx 的地址,按跳轉目标分组;
- 對每個入口手工跟一次跳轉,记錄响應头里的狀態碼和 Location 字段,命令行工具加對應參數即可;
- 統計每條鏈的跳轉次數,重点标记三次以上的鏈;
- 確認最终地址返回 200,且與頁面上實际使用的地址一致;
- 检查首頁、導航、站点地图里出現的是最终地址,而不是舊入口。
收敛跳轉鏈的几個做法
- 直接指向终点:把 A→B→C 改成 A→C,能少一跳就少一跳;
- 统一地址寫法:协议、主机名、末尾斜杠、大小寫只保留一種形式;
- 站点地图只放最终地址:不要把跳轉入口寫進 Sitemap;
- 内鏈同步替換:導航、面包屑、正文連結都指向最终地址;
- 定期回归:改版後隔一段時間看日誌中 3xx 的數量與最長鏈長度,避免新規則又叠出新的鏈條。
跳轉是迁移地址的工具,不是長期通路。鏈條越短,URL 被發現、被抓取的過程就越干脆。