很多站点為了方便用戶找内容,都會開啟站内搜尋。搜尋功能本身没問题,問题在于它往往會批量生成大量參數不同、内容稀薄的地址:關鍵詞组合、排序方式、分頁、時間篩選叠在一起,几天就能堆出成千上萬個 URL。如果不做處理,這些地址會同时占用抓取预算、稀释站内連結權重,也會让用戶点進去看到一堆與正文無關的頁面。
先搞清楚搜尋頁會生成哪些地址
動手處理之前,建议先從服務器日誌或搜尋功能的後台,把最近一段時間被訪問過的搜尋地址拉出来看一遍,常见的類型大致有這几類:
- 關鍵詞搜尋结果:以 q 或 keyword 參數為主,數量取决于用戶輸入,理论上没有上限。
- 無结果頁:搜尋了站内不存在的词,返回一個空白或近似空白的頁面。
- 排序與视图參數:同一批内容因為 sort、view、order 等參數生成多份地址。
- 搜尋结果的分頁:關鍵詞相同、頁碼递增,翻到很後面往往已经没什么内容。
- 多條件篩選叠加:分類、标簽、時間、價格同时生效,组合數成倍增長。
自查要点
- 搜尋頁是否可被索引。如果這類頁面已经被收錄,先加上 noindex,等重新抓取生效後再考虑其他處理方式,不要指望 robots.txt 能立刻把已收錄頁面清掉。
- 是否從正文大量連結到搜尋頁。标簽云、热门搜尋词、相關搜尋如果全站铺開,等于主動把蜘蛛往參數頁引。
- 無结果頁的返回狀態。搜不到内容时,要么给出推荐内容,要么返回合适的狀態,不要让它看起来像一篇正常文章。
- 分頁深度。搜尋结果的第三頁、第五頁之後基本没有獨立價值,是否還有必要開放抓取。
- 用戶是否真的需要這些頁面。站内搜尋的第一服務對象是人,處理方式要兼顾可用性,別把搜尋功能一起關掉。
常见的几種處理方式
1. 優先用 noindex,而不是简單屏蔽
對搜尋结果頁统一加 noindex,follow,可以让蜘蛛繼續顺着頁面上的連結發現内容,同时不把搜尋頁本身放進索引。這通常比直接在 robots.txt 里屏蔽更稳,因為被屏蔽的地址如果外部還有連結指向,容易變成没有内容可抓的“孤儿頁”。
2. robots.txt 只用于兜底
如果參數组合實在太多、抓取量已经明顯異常,可以在 robots.txt 中屏蔽典型的搜尋參數路径。但要记住两点:屏蔽只能阻止抓取,不能阻止收錄,已收錄的地址仍然需要 noindex 或返回 404、410 来慢慢清理;另外屏蔽規則寫得太宽,可能连正常頁面一起挡住,上线前一定要用抓取測試工具驗證。
3. 限制參數组合與分頁深度
排序、视图、時間等非必要參數尽量不要体現在可抓取的地址上,能合並就合並;搜尋结果分頁建议只保留前几頁,更深的頁碼返回空结果或不再輸出連結。
4. 控制内鏈出口
热门搜尋词、相關搜尋這類模块,可以改成前端交互或只在特定頁面出現,减少全站范围的連結暴露。标簽頁與搜尋頁的邊界也要分清,別让两套聚合逻辑互相喂地址。
處理完之後怎么驗證
- 用站内搜尋造几個不存在的词,看返回的頁面是否還像正常内容頁。
- 過一段時間再查服務器日誌,观察搜尋類地址的抓取比例是否下降。
- 检查索引狀態,確認搜尋頁在逐步减少,同时核心栏目的抓取没有被誤伤。
- 回看站内搜尋的使用資料,確認用戶還能正常搜到需要的内容。
站内搜尋是给用戶用的工具,不是给搜尋引擎准备的内容源。把它和内容頁分開對待,多數問题就解决了。