站点跑一段時間後,URL 數量往往會比實际内容多出好几倍。多出来的那部分通常不是新頁面,而是同一批内容带着不同參數被反复訪問。對蜘蛛来说,這些地址看起来彼此獨立,抓取资源就這样一点点被分散掉。
參數都從哪里来
先別急着封禁,把来源理清楚更省事。常见的几類:
- 分頁參數:?page=2、?p=3 這類。
- 排序參數:?sort=price、?order=desc。
- 篩選與属性:?color=red&size=40,组合起来數量會迅速膨胀。
- 跟踪參數:utm_source、from、ref、share 等,多數對内容没有影响。
- 會话與临时參數:sessionid、sid、ts,每次訪問都可能不同。
- 功能型參數:?print=1、?preview=1 這類輸出變体。
什么时候该管,什么时候可以放
不是所有參數都要處理。判断标准很简單:這個參數是否改變了頁面主体内容。改變了,比如篩選出特定價格区間的商品列表,它就是一個有意义的地址;没改變,比如只带了一串跟踪碼,那它就是重复地址。
對後者,處理顺序建议是:能去掉參數連結就去掉,去不掉就用 canonical 指向無參數版本,再不行才考虑在 robots.txt 里屏蔽這類參數抓取。
自查清單
- 從服務器日誌里抽出带問号的訪問记錄,按參數名統計出現频次,排個序。
- 確認站内連結是否在主動生成跟踪參數,常见于模板、分享按钮、广告位。
- 检查篩選頁有没有出口,會不會被顺着連結無限组合下去。
- 確認带參數頁面上的 canonical 指向了正确的主版本,並且是绝對地址。
- 检查站点地图里是否混入了带參數的地址。
- 確認參數屏蔽規則没有誤伤正文頁。
- 看搜尋後台的抓取統計,观察參數類地址的抓取占比是否在下降。
篩選頁的常见做法
篩選组合是最容易失控的部分,可以按下面几條控制:
- 只對少數高價值篩選组合生成可抓取連結,其余用按钮或脚本形式呈現。
- 限制同时可選的篩選维度數量,避免出現成倍相乘的组合。
- 给篩選结果頁设定分頁上限,別让加载更多一直通向更深的地址。
- 没有结果的空组合,返回合适的狀態碼,不要返回一個 200 的空列表頁。
跟踪參數怎么统一
站内連結尽量別带 utm 這類參數,它們留给站外投放就够了。如果确實必须带,建议统一參數名與书寫顺序,並在服務端做一次归一化:同名參數只保留第一個值,顺序固定,空值直接剔除。這样即使參數存在,地址的變体數量也會明顯收敛。
判断标准不是“這個地址好不好看”,而是“它和主版本相比,用戶看到的内容到底一不一样”。
做完之後怎么观察
調整參數策略不會立刻见效。更稳妥的做法是改完之後隔两到四周再看一次日誌和抓取統計,比較參數類地址與主版本地址的抓取次數有没有變化。如果屏蔽之後主版本的抓取量不升反降,先回头检查是不是誤伤了有用的篩選頁。
參數本身不是問题,失控的參數才是。把它当成站点结构的一部分来管理,比事後靠一條條規則打补丁要省事得多。