站内搜尋是给用戶用的,但對蜘蛛来说,它只是一串带參數的地址。只要搜尋结果頁可以被無限制地生成,站点就相当于给自己開了一個源源不断产出低质頁面的入口。這類頁面通常标题相似、正文稀薄、内容随查询词随机组合,既占抓取预算,也容易在索引里和真正的内容頁打架。
先確認:蜘蛛到底抓走了多少搜尋頁
自查的第一步不是马上動手屏蔽,而是先看資料。
- 在服務器日誌里篩選带搜尋參數的請求,統計各搜尋引擎蜘蛛的訪問量與狀態碼分布。
- 用站長平台或 site 查询,看已被收錄的搜尋頁大致有多少,标题是否呈現同一模板。
- 看這些頁面是否出現在站内連結里——很多問题不是蜘蛛主動發現,而是模板把搜尋頁連結铺到了每個頁面底部。
常见成因
- 搜尋结果頁的連結被寫進導航、标簽云或“热门搜尋”模块,全站可见。
- 地址參數没有做收敛,同一组搜尋结果因為排序、分頁、篩選生成多個地址。
- 搜尋结果為空时依然返回 200,並輸出一段“没有找到相關内容”的頁面。
- 模板没有区分用戶訪問與蜘蛛訪問,蜘蛛拿到的頁面和用戶看到的一样多。
處理方式:分三层来做
第一层:收敛入口
先切断蜘蛛發現搜尋頁的路径。把“热门搜尋”“相關搜尋”這類模块的連結改為不可爬取的形式,或者只保留少量指向真實栏目頁的入口。搜尋頁本身不建议放進站点地图,也不建议出現在導航里。
第二层:标记與拒绝抓取
對搜尋结果頁加 noindex,让已经抓到的頁面不進入索引;如果搜尋頁數量极大且没有保留價值,可以在 robots.txt 里對搜尋路径做整段屏蔽。注意两者不是二選一:noindex 需要蜘蛛能抓到頁面才生效,而 robots 屏蔽後蜘蛛看不到 noindex。選擇哪種,取决于你更在意“別再被抓”還是“抓到了也別收錄”。
第三层:空结果與分頁
- 空结果頁返回 404 或 410 更合适,至少不要返回 200 的正常内容頁。
- 搜尋頁的分頁同样會生成大量地址,如果保留,至少要限制翻頁深度。
- 篩選參數建议只保留必要的一两個,其余用固定顺序或路径化處理,减少组合膨胀。
別把用戶也一起挡住
處理搜尋頁时容易顺手把站内搜尋功能做没了。需要分清楚的是:屏蔽蜘蛛抓取不等于關閉功能,robots 與 noindex 只影响抓取和索引,用戶仍然可以正常搜尋。真正要避免的是把搜尋頁当成栏目来运营,用搜尋结果頁去承接關鍵詞流量——這類頁面的内容由查询词拼凑,稳定性差,也很难持續维護。
判断标准很简單:這個頁面是给用戶找内容用的,還是打算让搜尋用戶直接落地看的?前者應该關在索引外,後者才需要認真做内容。
改動之後的检查
- 观察一两周日誌,看搜尋路径的抓取量是否下降,抓取是否轉向真實内容頁。
- 在站長平台重新提交受影响的目錄或站点地图,让蜘蛛把精力放到该抓的地方。
- 抽查几组搜尋頁,確認返回的狀態碼、meta 标记和预期一致,別出現整站被誤屏蔽的情况。
站内搜尋頁本身不是問题,問题是它太容易被批量生成。定期做一次自查,把它從索引里請出去,抓取预算花在哪里、收錄质量如何,都會清楚一些。