蜘蛛池知识

蜘蛛池入口頁的 URL 規范化:大小寫、尾斜杠與參數的收口方式

蜘蛛池入口頁多為模板批量生成,同一頁面常被蜘蛛当成多個 URL 抓取,分散了有限的抓取次數。本文梳理重复 URL 的常见来源,给出規范形式的選定方法、301 與 canonical 的配合方式,以及參數分類處理和落地检查顺序。

蜘蛛池知识

蜘蛛池入口頁的 URL 規范化:大小寫、尾斜杠與參數的收口方式

蜘蛛池里的入口頁往往是模板批量生成的,同一套内容會铺在很多域名上,很容易出現一個頁面被蜘蛛当成好几個 URL 的情况。抓取次數是有限的,重复地址越多,真正需要被看到的頁面分到的份額就越少,日誌里也更难判断蜘蛛到底抓了什么、漏了什么。URL 規范化做的事很简單:把同一份内容固定在一個地址上,其他寫法都指向它。

哪些地方容易長出重复 URL

  • 大小寫差异:/Page 和 /page 在部分服務器上都能返回 200
  • 尾斜杠差异:/a 和 /a/ 同时可訪問
  • 主机名差异:www 與非 www、http 與 https、带與不带預設端口
  • 目錄預設文件:/a/ 與 /a/index.html 同时存在
  • 查询參數:utm、来源标记、排序、會话 ID
  • 编碼差异:中文路径的百分号编碼方式不一致
  • 多余斜杠與点号://a、/./a、/a/../a 這類寫法

先定一個規范形式,再让其他寫法指向它

規范形式没有标准答案,選一個自己维護起来最省事、也最容易在模板里统一生成的即可。多數情况下是全小寫路径、统一尾斜杠規則、固定一個主机名、不带多余參數。

定完之後,把其余寫法用 301 永久跳轉到規范形式。301 是明确信号,蜘蛛會逐步把老地址替換掉;302 只是临时跳轉,容易让两個地址長期並存。

跳轉鏈不要绕圈:A 跳到 B,B 又跳回 A,蜘蛛跟進几次之後往往就不再繼續。

參數是最容易失控的一類

入口頁本身很少需要參數,但模板、統計脚本、外部引荐都會往地址上挂參數。處理前先分成两類。

影响内容的參數

分頁、分類、篩選這類會改變頁面内容的參數應当保留,並让每一種取值都有唯一的規范形式。分頁建议保留,让蜘蛛能顺着往後走,而不是全部一刀切掉。

不影响内容的參數

utm、ref、from、會话 ID 這類只影响統計、不影响内容的參數,可以用 301 跳回不带參數的地址。如果组合太多太杂,也可以在 robots 里按參數特征整体屏蔽,但要先確認這些地址不是你想让蜘蛛抓的。注意不要一邊屏蔽一邊又指望它被收錄,這两件事是冲突的。

大小寫與尾斜杠的细节

  • 服務器不区分大小寫时,/AbC 同样可訪問,建议在應用层把大寫路径 301 到小寫
  • 尾斜杠统一之後,連結、sitemap、canonical 里都要跟着改,只改一處没有意义
  • 静態目錄的 index.html 建议 301 到目錄本身,避免两個地址同时可訪問

canonical 能替代 301 吗

canonical 是提示,不是指令,搜尋引擎可以采纳也可以忽略;301 是服務器层的跳轉,信号更明确。比較稳的做法是两者保持一致:能 301 的用 301,同时把 canonical 指向同一個規范地址。如果 301 暂时铺不開,canonical 至少能先统一信号。

但要避免自相矛盾的情况:A 頁面 canonical 指向 B,B 又指回 A;或者 canonical 指到一個在 robots 里被屏蔽的地址。

落地顺序

  1. 先從服務器日誌里按請求量排序,找出重复最嚴重的几類地址
  2. 確認這些地址返回的狀態碼與内容是否一致
  3. 在模板层统一生成規范 URL,連結、sitemap、canonical 同步修改
  4. 對非規范形式加 301,检查有没有形成跳轉鏈
  5. 观察一段時間日誌,看非規范地址的請求是否下降、規范地址的抓取是否稳定
  6. 收口完成之後再考虑扩量

几個常见誤区

  • 用 302 代替 301,導致两個地址長期並存
  • 只加 canonical 不改站内連結,頁面依舊大量指向非規范地址
  • 對規范地址本身也设了 Disallow,等于把正主挡在外面
  • 參數全部砍掉,连分頁也 301 回第一頁,蜘蛛反而進不去更深的内容
  • 改完不久又換一套寫法,蜘蛛還没處理完,規則又變了

改完怎么看

重点看三件事:非規范形式的請求量是否下降,規范地址的抓取频次是否稳定,日誌里的 301 响應是否集中且没有成环。URL 規范化本身不直接带来收錄,它做的是减少無效抓取,把有限的机會让给真正需要被看到的地址。這一步做不干净,後面加多少入口頁都會被稀释。