网站收录

robots.txt 和 noindex 各管一段:拦抓取与拦收录别用错工具

robots.txt 管的是蜘蛛能不能来抓,noindex 管的是抓到的页面要不要进索引,两者作用在不同环节。把它们混用,常见结果是页面没被抓到、却仍以无描述的形式留在搜索结果里。这篇文章拆开讲两者的分工、容易踩的组合,以及上线前后该怎么自查。

网站收录

robots.txt 和 noindex 各管一段:拦抓取与拦收录别用错工具

很多站点在清理页面时,会同时做两件事:在 robots.txt 里加一条 Disallow,再在页面上加一个 noindex。看起来是双保险,实际效果往往相反——页面没被抓取,却可能仍然留在搜索结果里,展示成一条没有标题描述的空壳。要避免这种情况,先要把这两个工具各自管哪一段分清楚。

两者作用的环节不一样

蜘蛛访问一个 URL,大致经历发现、抓取、解析、判断是否入索引几个阶段。robots.txt 和 noindex 分别卡在不同的位置。

  • robots.txt:作用是告诉蜘蛛“这个路径不要来抓”。它在抓取之前生效,蜘蛛看到规则后通常不会请求页面内容。它本身不表达“不要收录”的意思。
  • noindex:写在页面里(meta 标签或 HTTP 响应头),只有页面被真正抓取并解析后才会被读到。它的意思是“内容可以抓,但不要放进索引”。
  • canonical:解决的是“多个地址指向同一份内容”的问题,属于规范化,和上面两个不是同一类开关。

一句话概括:robots.txt 拦的是抓取,noindex 拦的是收录。要拦住收录,前提是页面得先能被抓到。

最容易踩的几种组合

用 robots.txt 来阻止收录

这是最常见的误用。路径被 Disallow 之后,蜘蛛拿不到页面内容,也就读不到 noindex。如果这个 URL 之前已经被索引过,或者有足够多的外链指向它,它有可能继续留在索引里,只是展示信息不完整。想让它退出索引,正确做法是先放开抓取,保证 noindex 能被读到,等页面从索引里消失后,再决定要不要重新屏蔽抓取。

noindex 页面同时被 robots.txt 屏蔽

和第上面是同一种问题的另一种表现。两个开关叠加,反而让 noindex 失效。如果确实不想让蜘蛛消耗抓取额度,可以用 X-Robots-Tag 响应头,但要确认蜘蛛能请求到这个响应头所在的那一层。

noindex 与 canonical 指向自己以外

页面一边写 noindex,一边用 canonical 指向别的地址,两个信号会互相打架。规范的做法是:想让这个地址退出索引,就只留 noindex;想把它合并到另一个地址,就用 canonical,不要额外加 noindex。

把 robots.txt 当成隐私或权限控制

robots.txt 是公开文件,任何访问者都能读取,被屏蔽的 URL 也仍然可能出现在其他地方。真正的敏感内容应该放在登录之后,而不是靠 robots.txt 挡住。

处理下架页面的推荐顺序

  1. 先确认页面是否还需要被抓取。如果需要退索引,就放开 robots.txt 对该 URL 的屏蔽
  2. 在页面或响应头中加上 noindex,确认返回的是正常状态码,不是 404 或跳转。
  3. 等页面从索引中退出,这个过程可能需要数周,具体取决于抓取频率。
  4. 退出之后,如果不想继续被抓取,再考虑重新加回 Disallow;如果页面已经删除,返回 404 或 410 同样能让它逐步退出。
  5. 整个过程中用站点地图的收录状态、URL 检查工具或索引报告观察变化,不要凭感觉判断。

上线前后怎么自查

  • 抽查页面的 HTML 源码,确认 noindex 出现在正确的位置,且没有被模板条件判断漏掉。
  • 打开 robots.txt,逐条核对 Disallow 的路径是否覆盖了本来打算收录的目录。
  • 测试环境加过 noindex、上线后忘了去掉,是批量漏收录的常见来源,发布流程里最好留一道检查。
  • 对重点页面做一次抓取视角的验证,确认蜘蛛拿到的是最终版本,而不是中间层的临时规则。
把抓取和收录当成两个独立的开关来管理,比把它们捆在一起更省事。多数“屏蔽了却还在”“没屏蔽却不收录”的问题,都能在这两个开关的先后顺序里找到原因。

最后提醒一点:无论用哪种方式,索引状态的更新都需要时间,也不会因为提交了某个指令就立刻生效。定期复查规则的残留,比临时补救更有用。