搜尋抓取

同一頁面的多個 URL:把重复抓取收敛到規范地址

同一份内容常常對應好几個 URL:http 與 https、带不带 www、末尾斜杠、大小寫、參數、打印版。它們各自被蜘蛛抓一遍,抓取量被摊薄,日誌也很难讀。這篇文章整理重复 URL 的常见来源、301 與 canonical 的分工、内鏈與 Sitemap 的统一寫法,以及怎么用抓取日誌驗證收敛是否生效。

搜尋抓取

同一頁面的多個 URL:把重复抓取收敛到規范地址

同一個頁面被蜘蛛抓了很多次,翻開日誌却發現抓的是几個寫法不同的地址——這種情况在中小站点上很常见。多數重复 URL 並不是外鏈带来的,而是站点自己長出来的:协议、域名前缀、參數、分頁、大小寫,每一样都能變出一個新地址。

重复 URL 一般從哪几個地方冒出来

  • 协议與域名前缀:http 和 https、带 www 和不带 www,几套组合如果都能正常訪問,等于给蜘蛛開了好几道门。
  • 路径寫法:末尾带不带斜杠、大小寫混用、多余的 index.html,服務器如果不做统一跳轉,就會被当成不同頁面。
  • 追踪與篩選參數:来源統計參數、排序方式、每頁條數、站内搜尋结果頁,随手一点就生成一串新 URL。
  • 功能型副本:打印版、移動版、分享预览頁,如果都返回 200,就等于把同一份内容交了好几遍。
  • 分頁與归档:列表翻頁、标簽頁、年月归档,數量一大,抓取量很容易被這些頁面吃掉。

為什么值得花時間收敛

重复 URL 不會直接導致什么嚴重後果,但它會带来三個具体的麻烦。第一,蜘蛛的抓取量是有限的,同一份内容抓五遍,新頁面分到的次數就少了。第二,外鏈和分享散落在不同寫法上,信号被拆開。第三,日誌里同一個頁面的資料被切成几段,排查抓取問题时很难看出真實情况。

收敛手段怎么分工

301 负责把入口统一

协议、域名前缀、末尾斜杠這類结构性差异,能用 301 就用 301,让所有寫法最终落到一個地址上。這是最干净的做法,蜘蛛跟一次就记住了。

canonical 處理那些不能跳的

带參數的篩選頁、打印版這類地址,有时确實需要保留给用戶訪問,這时用 canonical 指向規范頁更合适。注意 canonical 要指向返回 200 的地址,不要指向一個本身就會跳轉的 URL。

内鏈和 Sitemap 用同一套寫法

站内連結、導航、面包屑、Sitemap、RSS 里出現的地址,最好保持一致。内鏈里混着两種寫法,等于每天主動告诉蜘蛛“這里還有另一個地址”,前面做的跳轉會被慢慢稀释。

robots 與 noindex 要慎用

對确實不需要被抓取的參數组合,可以用 robots.txt 屏蔽,但別把需要索引的頁面一起挡掉。如果只想让頁面不參與索引、仍允许抓取,用 noindex 更稳妥;两者混用容易出現屏蔽了抓取、noindex 又讀不到的情况。

怎么確認收敛生效了

  1. 看抓取日誌里同一内容的 URL 數量是否下降,尤其是带參數的地址。
  2. 抽查規范地址在頁面源代碼里的 canonical 是否唯一、是否自指。
  3. 在站内随便点几條連結,複製出来的地址寫法是否一致。
  4. 观察抓取統計中列表頁、參數頁的比例有没有回落,新内容的抓取次數有没有回升。
收敛不是一次性的活。上新功能、接統計工具、改模板时都可能重新引入重复寫法,建议把“新頁面輸出前检查 URL 寫法”寫進上线流程。

重复 URL 的處理優先級可以按數量排:先解决协议和域名這類會全线複製的差异,再處理參數和分頁,最後收拾功能型副本。一步步来,日誌會先變得好讀,抓取量也會慢慢回到该去的地方。