网站收录

想让页面不入索引:noindex 和 robots.txt 该用哪一个

抓取和索引是两步,robots.txt 管抓取,noindex 管索引,用错顺序会让页面在索引里待得更久。本文把两者的作用位置拆开,按页面当前状态给出选择建议,并列出改完之后需要核对的检查项。

网站收录

想让页面不入索引:noindex 和 robots.txt 该用哪一个

做站点运营经常会碰到一个需求:某个页面不想让它出现在搜索结果里。这时候面前通常摆着两个选项——在页面里加 noindex,或者在 robots.txt 里屏蔽。两者看起来都是"挡住",但作用的位置完全不同,顺序用错了,反而会让页面在索引里待得更久。

先把两件事拆开:抓取和索引

搜索引擎处理一个 URL,大致分两步:先由爬虫把页面抓下来,再决定要不要放进索引。robots.txt 管的是第一步,noindex 管的是第二步。

在 robots.txt 里写 Disallow,等于告诉爬虫"这个地址不用来抓"。爬虫看不到页面内容,自然也读不到页面里的 noindex 标签。noindex 反过来,它必须写在页面里,或者通过 HTTP 响应头返回,爬虫得先把页面抓下来才能看到。这就是为什么一个常见的坑是:既在 robots.txt 里屏蔽,又指望页面里的 noindex 生效,结果两边都没起作用。

robots.txt 常被误用的地方

很多人以为在 robots.txt 里屏蔽一个 URL,它就等于从搜索结果里消失了。实际并不一定。

  • 如果这个 URL 之前已经被索引,屏蔽抓取并不会立刻把它清出索引,它可能继续以没有摘要的形式出现在结果里。
  • robots.txt 是公开文件,任何人可以查看。不要把不想公开的路径当成保密手段。
  • 不同爬虫对 robots.txt 的遵守程度不一样,屏蔽的实际范围也可能有差异。

所以 robots.txt 更适合用来控制抓取预算、减少无意义的抓取压力,而不是用来做索引清理。

noindex 生效需要满足什么

noindex 要想起作用,前提是页面能被抓取。也就是说:

  1. 该 URL 没有被 robots.txt 屏蔽;
  2. 服务器能正常返回页面,不是持续的超时或 5xx;
  3. 标签写在正确的位置,能被解析到。

常见的写法有两种:HTML 页面上用 <meta name='robots' content='noindex'>,非 HTML 资源比如 PDF、图片、视频,用 HTTP 响应头 X-Robots-Tag。后者容易被忽略,一份 PDF 只在文件里塞 meta 标签是没用的。

一个实用顺序:页面还没被索引、想让它别进去,可以允许抓取并加 noindex;页面已经被索引,同样先允许抓取并加上 noindex,等它从索引里消失之后,再考虑是否收紧抓取。

按场景选做法

具体用哪个,取决于页面当前的状态和你真正想达到的目的。

  • 不想被搜到、也不想被索引:允许抓取,加 noindex。确认移出索引后,如果不希望继续消耗抓取资源,再改成 robots.txt 屏蔽。
  • 只是不想让它占抓取预算:用 robots.txt。比如筛选参数、排序参数生成的组合页。
  • 页面数量大、层次明显:先看清哪一层是真正需要收录的,把不需要的层用 noindex 或屏蔽处理,不要所有层套同一套规则。
  • 已被索引且内容敏感:除了 noindex,还可以用搜索引擎提供的移除工具做临时处理,同时把页面本身删掉或改成返回 404、410。

改完之后要看什么

调整不是改完就结束,还需要核对几件事:

  • 用抓取测试工具确认页面返回的是预期状态码,noindex 是否被识别;
  • 观察一段时间内的索引数量变化,注意是缓慢下降还是完全没有变化;
  • 检查 robots.txt 是否误屏蔽了你还需要收录的路径,尤其是测试环境的规则被带到线上;
  • 如果走了删除路线,确认页面确实返回 404 或 410,而不是仍然返回 200。

简单归纳:robots.txt 决定抓不抓,noindex 决定收不收。想让一个页面从索引里出去,通常要靠 noindex 加可抓取;只想减少抓取压力,才用 robots.txt 屏蔽。把这两件事分清,很多反复处理不掉的问题就能顺着原因找到出口。