蜘蛛在站内爬行时,並不是只走一次就結束。它會根據連結反复回訪,也會把同一個頁面以不同 URL 反复抓取。如果站内連結存在回环,蜘蛛就會在几個頁面之間绕圈,把抓取次數花在已经看過的内容上,新頁面反而排到後面。
回环和重复連結常见来源
回环通常不是單一原因造成的,而是導航、分頁、篩選和归档叠加的结果。比較常见的几種情况:
- 分頁導航里同时出現“上一頁”“下一頁”“首頁”“尾頁”,並且這些連結互相指向,形成無休止的循环。
- 篩選和排序參數生成大量组合 URL,同一批内容被拆成很多條路径。
- 标簽頁、归档頁和日歷導航互相引用,任意日期都能跳到任意月份。
- 打印版、移動版、AMP 版没有指向主 URL,蜘蛛把每個版本都当成獨立頁面。
- 會话 ID 或跟踪參數被寫進内鏈,蜘蛛每抓一次就得到一個新的 URL。
用日誌確認蜘蛛走了哪些重复路径
先看服務器訪問日誌,按用戶代理篩選蜘蛛請求,记錄 URL、狀態碼和抓取時間。把 URL 按模板归類,比如列表頁、詳情頁、篩選頁,然後統計同一模板下被抓取的 URL 數量和频次。如果發現大量參數變体、同一内容對應多個 URL,或者某些頁面被抓取的次數遠高于更新频率,就說明抓取路径里有回环或重复。
也可以结合站内連結图,從首頁出發模拟蜘蛛走几层,看看哪些頁面被多條路径指向。路径越多,蜘蛛重复到達的概率越高。
内鏈與 Sitemap 的收敛做法
處理回环的目标不是把連結删光,而是让蜘蛛用更少的路径覆盖更多有效頁面。可以按下面几步做:
- 给每條内容确定一個主 URL,其他變体用 canonical 指向主 URL。
- 分頁只保留必要的“下一頁”和“上一頁”,避免所有頁碼全量互鏈。
- 對篩選參數、排序參數和會话參數,结合 robots.txt 或 noindex 處理,但不要屏蔽掉用于發現内容的主路径。
- Sitemap 里只放主 URL,不放參數變体和重复版本。
- 面包屑、導航和侧栏尽量指向栏目主路径,减少随机跳轉。
服務器稳定與抓取节奏
回环多的时候,抓取請求數會明顯上升。服務器如果响應變慢或频繁返回 5xx,蜘蛛會降低抓取频率,甚至暂时放缓整站抓取。所以收敛路径的同时,也要看服務器狀態:保持响應時間稳定,避免在抓取高峰出現超时。對參數頁可以适当限速,但不要把正常内容路径一起挡住。
驗證與持續观察
調整之後,繼續看日誌里重复 URL 的比例有没有下降,新發布的頁面是否更快被蜘蛛發現。如果重复抓取减少,但重要頁面反而抓不到,說明收敛過度,需要把關键入口加回来。
不要為了减少重复而屏蔽重要入口。先確認哪些路径是蜘蛛發現新 URL 的主要通道,再去掉真正造成回环的連結。