网站收录

站内搜索结果页被收录了:它为什么不该进索引,又该怎么收口

站内搜索生成的结果页往往返回 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 的抓取占比,占比升高通常意味着有新入口被放开;
  • 改版或上新模板时,把这一类页面的索引状态纳入检查清单。

站内搜索结果页本质上是功能页,不是内容页。把它当成功能页来管理,用索引开关而不是抓取开关收口,通常比事后大规模清理更省事。