蜘蛛池知识

蜘蛛池入口頁的 URL 參數與去重:蜘蛛眼里的同一頁和不同頁

蜘蛛池入口頁數量多,URL 參數一乱,同一篇内容就可能在蜘蛛眼里裂成好几個地址。本文從參數類型、連結輸出、規范化和日誌观察几個角度,說明怎么让入口頁地址更干净,减少無效抓取。

蜘蛛池知识

蜘蛛池入口頁的 URL 參數與去重:蜘蛛眼里的同一頁和不同頁

做蜘蛛池入口頁时,很多人把精力放在内容和連結上,却容易忽略一個基础問题:同一個頁面,蜘蛛可能看到好几個不同的 URL。入口頁一多,參數一乱,抓取预算就被分散到重复地址上,真正想让它讀的那一版反而可能被忽略。

蜘蛛怎么判断两個 URL 是不是同一頁

搜尋引擎對 URL 的去重,主要看路径、查询參數、主机名和协议。對入口頁来说,最常见的問题出在查询參數上。比如同一個頁面,連結里分別寫成:

  • /entry/123
  • /entry/123?from=abc
  • /entry/123?from=abc&utm_source=xxx
  • /entry/123?utm_source=xxx&from=abc

在蜘蛛眼里,這些地址可能被当作不同 URL 分別抓取。參數顺序不同、多一個跟踪參數、少一個預設值,都會造成新的地址。路径部分也有類似情况:大小寫不一致、末尾斜杠不一致、index 頁寫不寫,都可能裂成两個版本。

入口頁里常见的參數坑

跟踪與来源參數

統計代碼、外鏈来源、广告投放经常會在連結後追加 utm_source、utm_medium、from、ref、spm 等參數。入口頁如果直接從這些渠道複製連結,蜘蛛就會顺着带參數的地址抓。更麻烦的是,同一個頁面可能被不同渠道寫出不同參數组合。

分頁、排序與篩選參數

列表型入口頁常用 page、p、start、sort、order、filter 這類參數。分頁參數如果預設值和空值都能訪問,就會出現 /list、/list?page=1、/list?p=1 三個地址。篩選和排序參數如果组合過多,蜘蛛會陷入大量低價值 URL。

會话與临时參數

有些程序會在 URL 里带 PHPSESSID、sid、token 等會话參數。這類參數對蜘蛛没有意义,却會让每個訪問都變成“新地址”。入口頁連結輸出时,應尽量不把這類參數寫進 href。

入口頁 URL 设計的几條建议

  • 路径能静態化就静態化,參數越少越好。入口頁的主要任務是让蜘蛛發現連結,不是让用戶篩選資料。
  • 必须保留的參數只留一個,值也要可控。比如分類頁只用 /category/seo,而不是 /category?type=seo&sort=new。
  • 统一小寫,统一末尾斜杠。全站連結輸出保持同一規則,別一會儿带斜杠一會儿不带。
  • 分頁尽量用路径形式,比如 /list/page/2,比 ?p=2 更直观,也不容易和預設頁混淆。
  • 入口頁輸出的連結用規范化後的绝對地址,不要這邊寫相對路径、那邊寫带參數的完整路径。
  • 如果已经用了 canonical,确保它指向的規范地址和站内大多數連結一致,不要指向另一個带參數的版本。

已经出現多地址时怎么收

如果日誌里發現同一個入口頁被多個參數版本频繁抓取,可以先從連結輸出查起。把模板、統計代碼、广告位、外鏈里混用的地址统一成規范版本,通常能直接减少大部分重复抓取。對于已经产生並可能被蜘蛛记住的舊地址,用 301 跳轉到規范地址是比較稳妥的做法,不要依赖 JS 跳轉或 meta refresh,因為蜘蛛不一定會执行。

同时检查 sitemap 里提交的是哪個版本。如果 sitemap 提交的是带參數地址,而站内連結用的是静態路径,等于自己制造了两套入口。日誌观察时,可以重点看同一路径下不同參數的抓取频次,频次高的那组通常就是連結輸出最混乱的那组。

一個简單的检查清單

  1. 入口頁連結里是否混入了 utm、from、ref 等跟踪參數?
  2. 分頁、排序參數是否有預設值版本和空值版本同时可訪問?
  3. 大小寫和末尾斜杠是否全站统一?
  4. sitemap、站内連結、canonical 是否指向同一個規范地址?
  5. 日誌里同一路径是否出現多個參數版本的大量抓取?
URL 規范化不是做一次就結束的事。模板改版、統計代碼更新、渠道投放變化,都可能重新引入參數。把入口頁地址当成需要定期抽查的运营項,比一次性設定更實际。