很多站点的地址會随着用戶操作不断變長:点一次篩選加一個參數,換個排序再加一個,從外部渠道進来還带着一串跟踪碼。對用戶来说,這可能只是地址栏長了一点;對搜尋引擎蜘蛛来说,却是同一批内容被拆成了几十上百個地址,抓取時間被大量消耗在重复頁面上。
參數都從哪里来
先做一件事:把站点上所有會让地址出現問号和连接符的地方列出来。常见的来源大致有這几類。
- 列表的篩選與排序,例如 sort=price、order=asc
- 多條件篩選,颜色、尺碼、品牌叠加,组合數量随選項指數增長
- 分頁,既有路径式也有參數式,两種還经常混用
- 跟踪參數,utm_source、gclid、fbclid 之類
- 會话與身份标识,例如 sessionid、sid
- 展示選項,例如 print=1、view=mobile
- 站内搜尋,例如 q=關鍵詞
這份清單不需要多精确,但要尽量全。後面所有的判断,都建立在這份清單上。
為什么要花時間處理
原因並不复杂,但影响是叠加的。
- 同一份内容有多個地址,權重被摊薄,哪個才是規范版本自己也说不清
- 抓取资源是有限的,蜘蛛在同一批内容上轉圈,真正需要更新的頁面就排不上队
- 參數组合可以無限生成,蜘蛛很容易陷進抓取循环
- 訪問日誌和統計报表被參數地址污染,看不出真實的热门頁面
按“是否影响内容”分三類處理
最實用的切分方式不是按參數名,而是按它到底改變了什么。
第一類:不影响内容的參數
utm、gclid、fbclid、sessionid 這類參數,改變的只是来源統計,頁面本身一模一样。首選做法是让它們不要出現在站内連結里,内鏈自己夹带跟踪碼是最常见的自找麻烦。對于從外部带進来的這類地址,可以在服務器端做一次轻量跳轉,去掉參數後指向干净地址;也可以让頁面上的規范連結指向不带參數的版本。
第二類:改變展示但内容重复的參數
排序、每頁條數、视图切換属于這一類。它們确實會改變頁面呈現,但内容主体相同。常见做法是只保留一個預設形態可被抓取,其余交给規范連結来匯聚信号。這里有個容易踩的坑:如果直接在 robots.txt 里屏蔽所有带參數的地址,蜘蛛就讀不到頁面里的規范連結提示,反而失去了自我纠正的机會。允许抓取、再用規范連結引導,通常更稳妥。
第三類:真正产生獨立内容的參數
例如 的商品詳情、q=品牌词 的聚合頁,這些本身可能是有效頁面。要判断的是它有没有稳定的搜尋需求、有没有獨立價值。没有的话,让搜尋结果頁保持不被索引;有的话,就考虑改造成路径式的静態地址,而不是長期靠參數维持。
一份可以照着做的自查清單
- 導出最近一個月的服務器訪問日誌,按地址里是否带參數分组,看哪些參數被蜘蛛抓得最多。
- 把參數分成三類:不影响内容、改變展示但内容重复、产生獨立内容。
- 检查站内連結是否混入跟踪參數,重点看分享按钮、活動頁、邮件模板。
- 检查分頁,列表翻到第三十頁之後還有没有抓取價值,是否需要設定合理上限。
- 检查多條件篩選,是否允许同时勾選十几個條件,能不能限制组合數量或只開放單條件。
- 检查規范連結是否指向不带參數的規范版本,且使用完整地址。
- 在站長後台看索引报告,找出被大量收錄的參數化地址,逐個决定處理方式。
几個容易踩的坑
- 以為屏蔽等于解决。robots.txt 只是阻止抓取,並不阻止收錄,外部連結仍可能让地址進入索引。
- 全站统一規范到首頁。這會把本该獨立的内容頁也指向首頁,属于過度規范。
- 前端動態改地址却不更新規范連結。用戶複製分享的地址和蜘蛛看到的不一致。
- 只處理 utm。忘了广告平台自動附加的点击标识參數,它們同样是成批出現。
判断一個參數该不该留,可以問自己一句:如果這個地址被單獨分享出去,用戶打開後看到的還是不是一份完整、有用的内容?
處理完之後
參數治理不是一次性的工作。站点每加一個新功能,都可能带出一批新參數。比較務實的做法是把它寫進改版检查項:新上线的篩選、排序、分享功能,上线前先確認地址會長成什么样、規范連結怎么给、站内連結會不會夹带參數。之後定期回看訪問日誌里带參數請求的占比,這個比例在下降,就說明這一轮整理是有效果的。