做投放、做活動的时候,連結後面挂几個參數是很常见的事:utm_source、from、ref、share_id……對人来说没什么,但對搜尋引擎来说,每一個不同的參數组合都可能被当成一個新地址。如果站点本身没有任何處理,這些临时地址被爬虫發現之後,就可能大量進入待抓取队列,分散抓取资源,也容易在索引里留下重复内容。
這里聊的是自查思路:先知道自己站上有哪些带參數的地址在流通,再决定哪些该放行、哪些该合並、哪些该拦住。
一、先盘点連結的来源
很多參數不是自己加上的,而是別人加上来的。自查前可以先分几類看:
- 自己的投放連結:广告平台、短信、邮件、QR Code、公众号菜單等自動附加的參數。
- 站内分享功能:一键分享到社交平台时生成的带參地址。
- 第三方工具:統計、客服、联盟、比價插件等挂上的标识。
- 篩選與排序:列表頁的排序方式、價格区間、頁碼等交互产生的地址。
- 歷史遗留:早年做過的活動連結、短鏈跳轉後的地址。
把這些列出来,才能判断哪些是真正需要保留的入口,哪些只是過程产物。
二、參數可能带来的麻烦
- 地址數量膨胀:參數顺序不同、有無空參數、大小寫不同,都會生成一個看起来不一样的地址。
- 抓取资源被分散:爬虫花在临时地址上的時間,本该用在正式内容頁上。
- 内容重复:同一批文章或商品,因為參數不同被当成多個頁面。
- 排查困难:後台看到一堆相似地址,分不清哪個是主入口。
三、自查清單
- 從服務器訪問日誌里捞出带問号的請求,按參數名分组,看哪些出現频率高。
- 確認每個高频參數的作用:是必要的功能參數,還是纯統計标识。
- 检查這些地址的返回内容:是真的有不同内容,還是同一份内容的多種寫法。
- 查看目前是否已经有規則在處理,比如 robots.txt、canonical、跳轉,規則是否真的生效。
- 看後台抓取統計和索引情况,確認是否存在大量相似地址。
四、常见處理方式
1. 能不用就不用
如果參數只是為了統計,優先考虑在跳轉或脚本层面處理,让用戶和爬虫最终看到的都是干净地址。這是最省事的做法。
2. 统一到主地址
對于功能上确實需要參數、但内容基本一致的頁面,可以指定一個不带參數或只带必要參數的規范地址,让多個寫法归到一個主地址上。注意規范地址本身必须可訪問,内容要與目前頁面一致。
3. 用 robots.txt 拦住無意义的组合
像排序、會话、時間戳這類參數,可以在 robots.txt 里做模式拦截。书寫时注意不要誤伤正常頁面,改完先在測試环境驗證規則匹配的结果。
4. 服務器端做跳轉
對已经确定的临时入口,用一個 301 或 302 把它送到正式地址,比让两個地址同时存在更干净。跳轉鏈不要太長,最好一步到位。
五、投放前定個约定
與其事後清理,不如在流程上减少来源。可以在内部约定几條:
- 投放連結统一走一個中間跳轉頁,參數只在跳轉里使用。
- 同一活動的參數命名固定,不随手改大小寫和顺序。
- 新上线的篩選功能,提前和開發確認會不會生成可被爬取的地址。
- 定期把带參地址的日誌統計拉出来看一眼,發現異常组合及时處理。
追踪參數本身没有错,問题在于没人管。把它当成一次普通的地址治理:盘点、判断、處理、复查,走一遍流程就够了。
最後提醒一句:處理之後不要指望马上见效,抓取和索引的更新有自己的节奏。先確認規則正确,再观察一段時間,用日誌和後台資料来驗證效果,而不是凭感觉下判断。