网站收录

robots.txt 和 noindex 别用反了:屏蔽抓取不等于阻止收录

把 robots.txt 的 Disallow 当成阻止收录的手段,是很多站点常见的误用。本文把抓取、索引、展示拆成三个环节,说明 robots.txt 只拦抓取、noindex 才管收录,并给出把页面从索引里彻底收回来的操作顺序,以及 canonical、sitemap 等容易混在一起的细节。

网站收录

robots.txt 和 noindex 别用反了:屏蔽抓取不等于阻止收录

在服务器上把某个目录用 robots.txt 的 Disallow 挡掉,过几周去搜索结果里查一下,页面还在,标题摘要也没变。这是很常见的一幕。问题不在搜索引擎不听话,而在于屏蔽抓取和阻止收录被当成了同一件事。

抓取、索引、展示是三件分开的事

一个 URL 想出现在搜索结果里,大致要经过三步:先被发现(外链、sitemap、站内链接),再被抓取(蜘蛛读取页面内容),最后被索引并有机会展示。三道关卡各有各的控制手段,指令用错了关卡,自然看不到效果。

robots.txt 挡的是抓取这一步

Disallow 的作用是告诉蜘蛛“这个地址不要来抓”。它拦在抓取环节,蜘蛛不会读到页面内容,也就看不到页面里写的 noindex。已经被索引的页面,不会因为后来加了 Disallow 就自动消失,搜索引擎只是不再更新它,旧的快照和标题可能长期留在索引里。

反过来,Disallow 有时也拦不住索引。如果别处有链接指向这个地址,且锚文本提供了足够信息,搜索引擎仍可能把它作为一个缺乏内容可抓的条目放进索引,表现通常是标题奇怪、摘要缺失。

noindex 才是阻止收录的指令

noindex 写在页面的 meta robots 标签里,或者通过 HTTP 响应头里的 X-Robots-Tag 下发,后者更适合 PDF、图片这类非 HTML 文件。它的前提是页面必须能被抓取,蜘蛛进不来,就看不到这条指令。

几种常见组合的结果

  • 只有 Disallow:新页面不会被抓,已索引的页面不会移除。
  • 只有 noindex:蜘蛛能抓到并读到指令,索引会逐步移除,但抓取请求仍在消耗。
  • Disallow 与 noindex 同时加:noindex 起不到作用,因为蜘蛛看不到它,这是最典型的误用。
  • 先 noindex,确认索引清掉之后再 Disallow:可以省下后续抓取,但要确认状态确实已经变化。

想把一批页面从索引里收回来

  1. 先检查 robots.txt,把要清除的目录从 Disallow 里放开,允许蜘蛛重新抓取。
  2. 在页面上加 noindex,或通过 X-Robots-Tag 下发,并确认返回的是正常状态码,没有跳转、登录墙或错误页。
  3. 等蜘蛛重新抓取并读到 noindex,再用站内查询或搜索控制台的网址检查确认索引状态的变化。
  4. 确认索引中已无这批地址后,如果确实不希望再被频繁抓取,再考虑恢复 Disallow。

如果这批页面已经彻底下线、不再对外提供内容,返回 404 或 410 往往比 noindex 更快也更干净。但要留意:不要把本该保留的页面误删成 404,那会同时丢掉外链和流量入口。

几个容易混在一起的细节

  • canonical 指向别的页面,不等于“不要收录”,它只是一个合并信号,本页仍可能被抓取甚至展示。
  • noindex 加在公共模板上要格外小心继承关系,一处误加可能波及整个栏目。
  • 被 noindex 的页面没有必要再放进 sitemap,那是在白白消耗抓取配额。
  • 对 301 跳转页写 noindex 意义有限,搜索引擎最终按跳转目标页的指令来处理。
  • 用密码保护或登录墙隔开的页面,搜索引擎一般看不到内容,也就谈不上索引。
简单记:不想内容被收录,用 noindex;不想被频繁抓取,用 robots.txt。两者混用之前,先想清楚页面正处在哪一步。

如果只是希望某些页面不出现在搜索结果里,同时又想让蜘蛛偶尔来确认状态,noindex 通常是更合适的选择;真正需要降低抓取压力的目录,才轮到 robots.txt 出手。把工具放在正确的关卡上,比反复调整参数更有用。