站内搜尋頁為什么會被抓走
很多站点的站内搜尋頁是被搜尋蜘蛛自己找到的:用戶在搜尋结果頁留下的連結、頁面上的热门搜尋词、以及结果頁之間的互相連結,都會形成一條不断延伸的路径。只要參數组合够多,理论上可以生成近乎無限的 URL。
這類頁面的問题不是“能不能被抓”,而是抓走之後對站点有什么影响:占用抓取资源,把有限的抓取配額消耗在低價值頁面上,在索引里堆积大量内容高度相似的地址,让真正需要被發現的頁面排队更久。抓取、索引、排序是三件不同的事,這里主要影响的是前两件。
先判断:這批頁面值不值得留在索引里
不是所有站内搜尋结果頁都要一刀切。可以先按下面几條過一遍:
- 是否有稳定的搜尋需求,比如固定分類组合,用戶會重复使用;
- 结果頁本身是否有足够多且唯一的内容,而不是只顯示几條重复條目;
- 是否有獨立的标题、描述和正文结构,而不是纯模板拼装;
- 數量是否可控,比如几十個固定的聚合頁,而不是任意關鍵詞都能生成一個。
满足大部分條件的,可以考虑保留並做規范化處理;纯動態、無差別生成、内容稀薄的,通常更适合收口。
三種處理方式,效果差別很大
常见做法有三種,別混着用:
- robots.txt 禁止抓取:只能挡住抓取,挡不住收錄。已经進入索引的地址可能仍然留在里面,而頁面上的 noindex 标簽因為抓不到也不會被讀到。
- 頁面返回 noindex:让頁面可以被抓取,但明确不進索引。前提是抓取没有被 robots.txt 阻断。
- 返回 404 / 410 或撤掉入口:适合彻底不需要的頁面。但要確認没有站内連結繼續指向它們。
如果目标是“從索引里去掉”,通常需要先允许抓取、再輸出 noindex,等索引里的地址逐步减少後,再考虑是否加回 robots 限制。顺序颠倒,往往两邊都做不成。
一個可执行的收口顺序
- 從搜尋控制台的覆盖率报告和服務器日誌里,統計站内搜尋頁被抓取和被索引的規模,先看量級再决定動作。
- 確認這些頁面的入口在哪里:站内搜尋框、热门词模块、分頁連結、站点地图。入口不收,抓取不會停。
- 對需要保留的少數頁面,固定 URL 结构、去掉無用參數、补上唯一的标题與描述。
- 對需要收口的頁面,輸出 noindex 並保持可抓取,同时把這些 URL 從站点地图中移除。
- 减少内部連結:搜尋框改用表單提交或加 nofollow,热门词模块限制數量。
- 观察两到四周,看索引中的數量是否下降、日誌中相關抓取是否减少,再决定下一步。
收口之後還要复查什么
索引的更新不是實时的,地址會在一段時間内繼續存在。這段時間里要注意:noindex 是否真的出現在返回的 HTML 里,如果是 JavaScript 注入,可能讀不到;服務器是否對這類頁面返回了正常狀態而不是错誤頁;分頁和排序參數是否又生成了新的變体。
另外,如果站内搜尋结果頁被大量收錄,往往說明站点的内部連結结构有問题——蜘蛛没有更好的路可走,只好沿着搜尋參數一路爬下去。這时候改進栏目頁和内鏈,比單纯屏蔽更根本。
抓取和收錄是两步:能抓不等于會收,禁止抓取也不等于從索引里消失。處理站内搜尋頁时,先想清楚目标是把抓取挡在外面,還是把地址從索引里拿掉,两者對應的做法完全不同。