網站收錄

站内搜尋结果頁被收錄了:它為什么不该進索引,又该怎么收口

站内搜尋生成的结果頁往往返回 200、带内鏈和列表结构,很容易被蜘蛛当成普通列表頁抓取並收錄。本文說明如何確認它是否真的進了索引,以及用索引開關而非抓取開關收口的顺序,並给出已收錄頁面的處理思路。

網站收錄

站内搜尋结果頁被收錄了:它為什么不该進索引,又该怎么收口

很多内容站都提供站内搜尋:搜尋框、热门關鍵詞、空结果頁上的推荐词,本来只是為了方便用戶繼續浏览。但它們生成的结果頁同样是真實的 HTML 頁面,返回 200,有标题、有列表、有内鏈。對搜尋引擎来说,這類頁面和普通列表頁没有明顯区別,被爬到、被收錄也就不奇怪。

它為什么容易被当成正常頁面

  • URL 结构規整,常见形如 /search?q=關鍵詞,不带明顯的拼接痕迹;
  • 頁面上有大量指向詳情頁的連結,蜘蛛顺着走能拿到更多内容;
  • 頁面之間還會互相連結,比如相關搜尋、翻頁、二次篩選;
  • 有的站点把搜尋頁做進了導航或頁脚,等于给了它一個全站入口。

结果是:同一個關鍵詞可能對應一條索引记錄,而不同關鍵詞的组合又是成千上萬條。這些頁面對用戶價值有限,對索引却是實打實的占用。

先確認它是不是真的進了索引

不要看到日誌里有 /search 的抓取记錄,就断定被收錄了。抓取和收錄是两件事:蜘蛛来過,不代表頁面進入了索引。比較可靠的判断顺序是:

  1. 用 URL 检查類工具查一两個典型的结果頁 URL,看狀態是“已编入索引”還是“已抓取,尚未编入索引”;
  2. 用 site: 查询做粗略抽样,注意它只反映大概范围,不能当精确數量;
  3. 看日誌里這類 URL 的抓取频次和爬取深度,如果频率明顯高于普通列表頁,說明它被当成了重要入口;
  4. 統計這類 URL 在索引中的大致占比,判断是零星几條還是成規模。

把這三個层面的信息放在一起看,才能判断問题的嚴重程度,也决定了後面要不要動 robots.txt。

收口顺序:索引開關優先于抓取開關

最常见的错誤做法,是發現被收錄後直接在 robots.txt 里 Disallow 掉 /search 目錄。這样做的後果是:蜘蛛再也看不到頁面内容,也就看不到頁面上的 noindex,已经進索引的舊 URL 可能長期留在那里,甚至以“無摘要”的形式出現。

更稳妥的顺序是先控索引、再考虑是否控抓取:

  1. 確認這類頁面确實不该進索引。纯站内搜尋结果、排序參數、空结果頁通常属于功能頁,不需要被检索到;
  2. 先允许抓取,不要在 robots.txt 里拦,保證蜘蛛能讀到頁面上的指令;
  3. 在頁面上輸出 noindex,可以用頁面級的 meta robots,也可以用服務端返回的 X-Robots-Tag,後者更适合统一處理;
  4. 减少站内入口,把搜尋框改成表單提交或前端渲染,让结果頁不再成為可爬連結的来源;
  5. 不放進 sitemap,也不要让结果頁之間互相連結,切断參數空間的自我繁殖;
  6. 已收錄的頁面,等 noindex 生效、索引里逐步消失後,再评估是否需要在 robots.txt 里 Disallow。如果頁面本来就没有抓取價值,拦掉可以省带宽,但顺序不能反。
Disallow 管的是“能不能抓”,noindex 管的是“能不能進索引”。想让頁面從索引里出去,要用後者;前者用早了,反而让後者失效。

已经收錄的頁面怎么處理更快

如果確認數量不多,可以在工具里對代表性 URL 提交移除請求,同时保證頁面已经輸出 noindex。移除請求是临时的,真正的長期方案還是頁面自身的指令。數量較多时,優先處理被抓取最频繁、連結入口最多的那几類,比如带热门词的结果頁,它們往往带動了其他參數的抓取。

另外要注意搜尋结果頁和分類篩選頁的区別。分類篩選頁里有些參數组合确實有獨立價值,比如按價格、按地区篩選;而站内搜尋的结果頁通常没有這種價值,两者的收口策略不该一刀切。

日常守住几條线

  • 新做搜尋功能时,就在模板层把 noindex 寫好,不要等被收錄了再补;
  • 搜尋结果頁不要出現在導航、頁脚、面包屑里;
  • 定期抽查日誌中參數類 URL 的抓取占比,占比升高通常意味着有新入口被放開;
  • 改版或上新模板时,把這一類頁面的索引狀態纳入检查清單。

站内搜尋结果頁本质上是功能頁,不是内容頁。把它当成功能頁来管理,用索引開關而不是抓取開關收口,通常比事後大規模清理更省事。