做蜘蛛池入口頁时,很常见的操作是给目标 URL 加一串来源标记,比如 ?utm_source=xxx&utm_medium=xxx,方便自己在統計工具里区分流量来源。加完之後又開始担心:搜尋蜘蛛看到這個带參數的地址,會不會把它当成一個全新的頁面?原来那個干净 URL 會不會被挤掉?這個問题没有一刀切的答案,但可以從搜尋蜘蛛判断 URL 的基本逻辑说起。
搜尋蜘蛛眼中的 URL,首先是一串字符串
對搜尋蜘蛛来说,URL 首先是唯一标识。只要字符串不一样,它預設就是两個地址。它不會自動理解某個參數只是統計用途、不影响内容,除非頁面本身给出 canonical 之類的明确信号。所以 ?utm_source=a 和無參數版本,在抓取队列里往往會被当作两個待抓任務。
直接後果是:入口頁輸出的带參 URL 越多,搜尋蜘蛛需要處理的地址就越多,而這些地址背後的内容其實完全一样。
哪些參數風險大,哪些相對無害
- 营销来源參數(utm_、gclid、fbclid 等):几乎必然产生新地址,而且數量會随投放渠道增長。
- 會话或用戶 ID 參數:風險最高的一類,可能無限生成地址,让抓取量被大量空跑占用。
- 排序、篩選、分頁參數:内容确實有變化,但也容易衍生出成百上千個高度相似的地址。
- 纯锚点(# 後面的内容):不參與服務端請求,一般不會形成新 URL。
具体會影响到什么
- 抓取预算被稀释:搜尋蜘蛛在入口頁上花的時間變多,能分给其他目标 URL 的次數就少。
- 信号分散:指向同一頁面的連結如果分裂成多個带參版本,外部信号不容易聚拢到一個地址上。
- 日誌难讀:同一篇文章在日誌里出現十几個不同 URL,很难判断到底抓了几次、有没有抓全。
- 索引表現波動:搜尋蜘蛛可能在不同時間抓到带參和不带參两個版本,展示的 URL 會来回變化。
入口頁上更稳妥的几種寫法
- 入口頁輸出的目标連結,尽量用不带跟踪參數的規范地址,把統計參數留给自己在跳轉环节附加,而不是寫死在超連結里。
- 如果目标頁本身必须支持參數,可在该頁用 rel=canonical 指向無參版本,向搜尋蜘蛛表明主版本。
- 避免把 session id、用戶 id 之類的動態參數直接暴露在入口頁的連結里。
- 分頁、篩選這類功能性參數,可以用 robots.txt 的 Disallow 或搜尋引擎提供的參數處理工具做收敛,但要注意別把有用的頁面一起挡掉。
- 定期比對入口頁輸出的 URL 列表和目标頁的規范地址列表,看有没有長期對不上的情况。
參數本身不有害,有害的是同一份内容被拆成几十個地址之後,抓取和信号都變得分散。判断标准很简單:這個參數是否會真正改變頁面内容。
几個常见的理解偏差
有人以為入口頁里同时出現带參和不带參两個連結,搜尋蜘蛛就會自動挑一個。實际上它一般會两個都抓,最终哪個版本進入索引,還要看 canonical、内鏈、外鏈等综合信号。也有人觉得參數短就没問题——長度不是重点,能不能稳定生成無限地址才是重点。
怎么確認自己有没有踩坑
- 在服務器日誌里筛出含 ? 的請求,看它們的占比和重复程度。
- 用站点查询指令或搜尋控制台的覆盖报告,观察是否存在同内容多地址的情况。
- 對比入口頁輸出的連結數量和目标站真正希望被抓住的 URL 數量,差距越大越值得排查。
把這几步做完,通常能比較清楚地看出參數到底带来了什么影响。需要說明的是,即使 URL 處理得干净,抓取和收錄仍然取决于搜尋蜘蛛自身的判断,任何入口頁做法都不等于收錄结果。