不少站点运营者第一次去翻服務器日誌时,會看到大量形如 /search?q=關鍵詞、/list?color=red&size=l&page=3 的訪問记錄,而且抓取频次不低。這些地址大多不是編輯主動發布的,而是用戶在站内搜尋、勾選篩選條件时自然生成的連結。它們對用戶当下有用,對搜尋引擎却往往是负担。
核心矛盾在于:站内搜尋與篩選的组合几乎是無穷的,而抓取资源是有限的。当一個站点的可抓取 URL 中绝大部分都是這類低價值頁面时,真正需要被發現的栏目頁和内容頁,拿到的抓取机會就會被稀释。
這類 URL 為什么會失控
常见的成因有几個。搜尋框提交後直接把關鍵詞寫進 URL,用戶每搜尋一次就产生一個新地址;篩選器用查询參數表達,颜色、尺碼、排序方式可以任意组合;列表頁的排序方式(價格升序、销量降序)各自對應一個 URL。這些入口本身都是合理的交互设計,問题出在它們没有邊界。
還有一種隐蔽的情况:站内搜尋结果頁里又列出了指向其他搜尋结果的連結,比如“相關搜尋”“大家還在搜”。蜘蛛顺着走,就會在搜尋頁之間来回打轉,越抓越多。
先判断它到底是不是問题
不是所有带參數的 URL 都值得處理。判断依據主要有三個:
- 抓取频次:這類 URL 是否占據日誌中相当大的比例,並且持續存在。
- 内容重复度:不同參數组合出来的頁面,正文内容是否高度雷同。
- 是否有搜尋流量:其中是否有一部分頁面本身能带来稳定的自然搜尋訪問。
如果前两條成立、第三條不成立,通常就值得動手收敛;如果某些篩選组合确實有稳定的搜尋需求,贸然封堵反而會丢掉流量。
几種處理手段與取舍
robots.txt 屏蔽
在 robots.txt 中禁止抓取搜尋路径,是最省事的做法。要注意的是,被屏蔽的頁面蜘蛛不再抓取,頁面上的内鏈和外鏈也不會被繼續跟進。假如搜尋结果頁里恰好有指向重要内容的連結,這條路會被一起切断。因此屏蔽前先確認這條路径上不存在你希望被發現的入口。
noindex 與 canonical
如果希望蜘蛛仍能抓取、但不希望頁面進入索引,可以在頁面級別使用 noindex。這種方式保留了抓取通道,代價是仍然消耗抓取资源。canonical 則适合處理“同一批内容的多種排序方式”,把它們指向預設排序的列表頁。两者目标不同:一個是登出索引,一個是合並信号,不要混用。
收敛入口與參數
更彻底的做法是從产品层面减少 URL 的产生。比如搜尋结果的 URL 只保留關鍵詞參數,排序和分頁共用一套規則;篩選條件設定可選范围的上下限;不在搜尋结果頁里放“相關搜尋”這類循环連結。這類改動需要前後端配合,但收益是長期的。
篩選頁要区別對待
电商類站点的篩選頁常常有真實搜尋需求,比如“某類目 + 某材质”。處理时可以考虑把稳定、有量的篩選组合固定下来,做成獨立的静態路径,並纳入站点地图;而任意组合的临时篩選,則通過參數限制或 noindex 控制。關键是给出一個明确的邊界,而不是一刀切。
不要连有意义的路径一起堵
處理這類問题时最常见的失誤,是把規則寫得太宽。例如用通配符屏蔽了所有带問号的 URL,结果连分頁、文章頁的追踪參數也被挡在外面。建议規則尽量精确到路径前缀,上线後在日誌里持續观察,確認正常的列表頁和内容頁抓取量没有下滑。
一份检查清單
- 導出近一個月的訪問日誌,按 URL 模式聚合,統計带參數訪問的占比。
- 抽样检查這些頁面,確認正文是否重复、是否有實际搜尋流量。
- 在 robots.txt 或頁面标簽层面给出處理規則,注意規則的作用范围。
- 清理搜尋结果頁内部指向其他搜尋结果的連結,打断循环。
- 把有稳定需求的结果頁轉為静態路径,並纳入站点地图。
- 規則上线两周後复查日誌,對比正常頁面的抓取频次變化。
站内搜尋與篩選是给用戶用的工具,不是给蜘蛛铺的路。把它們和内容頁区分開管理,抓取资源才會流向真正需要被發現的頁面。