做站点运营的时候,參數是最容易被忽略的一類問题。它不像死鏈、404 那样一眼就能看见,但在抓取日誌里出現的次數往往多得吓人。
參數頁為什么會失控
篩選、排序、分頁、站内搜尋、来源跟踪,這些功能几乎全靠參數驱動。用戶点几下就能拼出成千上萬條地址,而每條地址在蜘蛛眼里都長得不一样,于是它會被当成新頁面反复訪問。
直接後果是:真正需要被收錄的栏目頁和詳情頁,抓取次數被挤到了後面。這就是常说的抓取预算被稀释。它不會立刻表現為收錄下降,但一段時間後你會發現新頁面的發現速度變慢了。
先给參數分個類
值得保留的
- 有明确搜尋需求的篩選,比如按城市、按品類,且用戶在站内确實會搜尋這類词
- 结果相對稳定、不會随库存大幅波動的參數组合
- 能獨立成頁、本身有一定内容可讀的组合
建议收敛的
- 排序方式:order、sort、by 這類,通常只需要保留一個預設顺序
- 會话與跟踪參數:utm_、from、ref、sessionid 等
- 纯技術參數:打印、導出、每頁顯示條數
- 無意义的多參數叠加,比如同时带上三個以上篩選條件
判断标准其實很简單:這個地址如果被用戶單獨分享出去,對方打開後能看到有用内容吗?如果答案是否定的,它大概率不需要被蜘蛛抓。
站内搜尋頁單獨看
站内搜尋頁通常有两個麻烦。一是结果頁本身没什么可讀内容,二是搜尋结果會组合出近乎無限的地址。常见做法是把搜尋结果頁设為 noindex,同时在 robots.txt 里屏蔽搜尋路径。
但要清楚一点:屏蔽收錄不等于蜘蛛不會訪問,抓取次數照样會發生。所以屏蔽只是一层,更關键的是別在頁面里到處暴露搜尋連結。
如果站内搜尋本身有流量價值,可以挑出少數高频關鍵詞,给它們做固定頁面,其余的交由規則限制。
自查清單
- 從抓取日誌或服務器日誌里筛出带問号的地址,按參數名統計出現次數
- 把出現最多的前十類參數列出来,逐個判断是否需要被蜘蛛抓取
- 检查 robots.txt 是否已经屏蔽了跟踪參數和搜尋路径
- 检查列表頁里的篩選連結,是否都指向同一套規范地址
- 確認篩選頁有 canonical 或等價處理,避免同一批内容存在多套地址
- 改完後观察一到两周,看參數地址在抓取總量中的占比是否下降
服務器與缓存也要一起看
有些 CDN 預設忽略查询參數做缓存,這會让不同篩選條件返回同一個缓存结果。用戶看到的内容對不上,蜘蛛抓到的也可能是舊版本。上线前確認一下缓存策略是否把關键參數計入了缓存键,避免出現地址不同、内容却一样的混乱局面。
別走极端
把所有參數一刀切屏蔽,可能會顺手挡掉真正需要的入口。有些篩選组合本身就是用戶常搜的词,直接屏蔽等于把流量让出去。稳妥的做法是先看搜尋需求和日誌資料,再决定留哪些。
參數治理不是越少越好,而是让蜘蛛把有限的次數花在能带来價值的地址上。
落地节奏
一次只動一類參數,改完观察一段時間再動下一類。改動前後各留一份日誌做對照,出問题时能快速回退。如果是多人协作的站点,把參數規范寫進上线的检查項里,比事後补救省事得多。