网站收录

robots.txt 还是 noindex:想阻止收录时该选哪一个

robots.txt 拦在抓取之前,noindex 作用在抓取之后,两者混用常导致页面只留一个光秃秃的 URL 在索引里。本文按几种常见需求拆解该用哪个指令、叠加使用会出什么问题,以及改动后如何验证是否生效。

网站收录

robots.txt 还是 noindex:想阻止收录时该选哪一个

很多站点在需要“不让某个页面出现在搜索结果里”时,第一反应是打开 robots.txt 加一行 Disallow,或者给页面加个 noindex。这两个指令看起来目标一致,实际作用的环节完全不同:一个拦在抓取之前,一个作用在抓取之后。用错了组合,常见的结果是——你屏蔽了抓取,页面却仍然带着 URL 留在索引里。

一个管抓取,一个管索引

把爬虫处理一个 URL 的过程拆开看:发现 URL、抓取页面、解析内容、决定是否编入索引。robots.txt 只在“抓取”这一步之前起作用,它告诉爬虫这个路径不要抓。既然页面没被抓取,爬虫也就读不到页面里的 noindex,更无从判断内容质量。

noindex 是页面被成功抓取、解析之后才生效的指令,表达的是“可以看,但不要收录”。因此两者的观察位置也不一样:

  • robots.txt 的效果体现在抓取日志里,表现为对该路径的请求减少或消失;
  • noindex 的效果体现在索引状态里,页面可能仍被抓取、被读取,但不进入可搜索集合。

两者叠在一起时会发生什么

如果同一个 URL 既被 robots.txt 屏蔽,又带着 noindex,实际结果通常是:爬虫不抓页面内容,只凭外链锚文本或历史信息保留一个“仅有 URL”的条目。用户搜到它,看到的是标题和链接,没有摘要——这往往不是站点想要的状态。

想让页面从索引中消失,先让它可被抓取;想减轻抓取压力,才用 robots.txt。同一时间通常只需要其中一个。

按需求选,而不是按习惯选

希望页面彻底不出现在搜索结果里

允许抓取,加上 noindex;对非 HTML 资源则用 X-Robots-Tag 响应头。页面被抓到后,爬虫读到指令,在后续的索引更新中移除。已经收录的页面不会立刻消失,需要等下一次重新抓取与处理。

只是不想让爬虫反复消耗资源

用 robots.txt 屏蔽路径,比如后台、站内搜索结果页、大量参数组合。这类页面本来也不指望被收录,重点是别让它们占用抓取配额。

页面已经收录,现在要下架

顺序上先放开抓取,再确认 noindex 生效。如果页面本身要删除,配合 404 或 410 会更直接。只加 noindex 却不放开抓取,移除过程会被拖长。

希望保留链接关系、只去掉内容展示

robots.txt 可以让页面不被抓取,但指向该 URL 的外链依然可能使它留在索引里。如果接受“只留 URL、不留内容”,这是一种折中;如果不接受,还是要走可抓取加 noindex 这条路。

几个容易踩的细节

  • canonical 与 noindex 同时出现容易互相矛盾。一个说“用另一个版本代表我”,一个说“不要收录我”,爬虫需要自行判断,结果不稳定。
  • 被其他页面 canonical 指向的 URL,其 noindex 可能被忽略。动手前先确认是否存在这类关系。
  • HTML 之外的资源用不了 meta 标签。PDF、图片、视频要靠 HTTP 响应头里的 X-Robots-Tag。
  • robots.txt 是公开文件。不要在里面写任何不希望被看到的路径说明。
  • 指令的效果需要时间。不同搜索引擎的处理节奏不一样,改动后要留出观察周期,不要凭一两天的日志下结论。

怎么确认设置真的生效了

  1. 用 URL 检查类工具看该地址当前是否可被抓取,以及页面实际返回的指令是什么。
  2. 用站点查询看目标 URL 是否还在结果中,注意“仅有 URL”条目的存在。
  3. 看服务器日志里该路径的抓取记录,判断 robots.txt 是否真的减少了请求。
  4. 改动后间隔一段时间复查,避免在同一天内反复调整指令。

把“不想被看到”和“不想被收录”分开表述,是这类设置里最容易做对、也最容易做错的一步。先想清楚要拦在哪一个环节,再决定写哪一行。