网站收录

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

noindex 和 robots.txt 经常被混用,但一个管索引、一个管抓取。本文说明两者各自生效的前提、常见的叠加误用,以及临时下线、永久删除、保留页面但不让收录等场景该选哪种手段,并给出调整后的核对顺序。

网站收录

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

做站点运营时,经常遇到两种诉求:一种是“这个页面别进索引”,另一种是“别再抓它了”。这两句话听起来接近,对应的手段却完全不同——前者用 noindex,后者用 robots.txt。把两者混着写,是页面迟迟不退出索引最常见的原因之一。

先分清抓取和索引是两件事

抓取是搜索引擎把 URL 取回本地,索引是判断这个 URL 值不值得放进结果页。robots.txt 管的是第一件事:它告诉爬虫哪些路径不要抓。noindex 管的是第二件事:它告诉搜索引擎“抓到了,但别放进索引”。

关键在于先后关系:noindex 是一条指令,必须被爬虫真正读到才生效。如果这个 URL 已经被 robots.txt 挡住,爬虫拿不到页面内容,也就看不到里面的 noindex。

用 robots.txt 屏蔽之后,页面会怎样

  • 正常情况下该路径不再被抓取,服务器日志里对应的请求会明显减少。
  • 但已经进入索引的 URL 不会因此自动消失,robots.txt 里没有“移除索引”的语义。
  • 搜索结果里可能出现只显示 URL、没有标题和摘要的条目。
  • 其他站点指向该 URL 的外链仍然存在,这个地址依然被搜索引擎“知道”。

noindex 的正确用法

两种写法效果一致:页面 HTML 的 head 里写 meta robots noindex,或者服务器在响应头里返回 X-Robots-Tag: noindex。后者更适合非 HTML 资源。

  • 页面需要返回 200,并且允许被抓取。
  • 指令要出现在爬虫实际拿到的内容里。如果 noindex 是靠 JS 注入的,风险明显更高。
  • 生效要等下一次抓取,延迟从几天到数周不等,不是提交后立刻消失。

几种典型误用

  • 同时写 Disallow 和 noindex:爬虫被挡住,读不到页面里的 noindex,页面可能长期停留在既没退出索引、也没被更新的状态。
  • 以为 robots.txt 里能写 noindex:语法上不成立,写了也没有作用。
  • noindex 的 URL 还留在 sitemap 里:这是在主动邀请抓取一个不想收录的地址,信号自相矛盾。
  • 整站加 noindex 做“临时维护”:如果维护时间较长,恢复后重新收录需要一段时间,风险通常比返回 503 更大。

按场景选手段

  • 临时下线、希望保留页面和排序:优先考虑返回 503。
  • 页面永久不要了:410 或 404 比 noindex 更直接。
  • 页面要留着给用户访问,只是不想进索引(后台、筛选结果、重复内容):noindex,并允许抓取。
  • 只是不想让爬虫反复来,不介意是否收录:robots.txt 里的 Disallow。
  • 敏感目录,页面本身也不该被访问:robots.txt 配合访问权限控制,不要指望索引指令代替权限。

调整后的核对顺序

  1. 确认目标 URL 返回 200,且 robots.txt 没有挡住它。
  2. 确认 noindex 出现在原始 HTML 或响应头中,而不是渲染之后才出现。
  3. 用抓取测试类的工具看一次实际返回的指令,避免模板继承导致的误加。
  4. 观察索引状态变化以周为尺度,不要每天反复改指令。
  5. 对确实需要尽快消失的已收录 URL,可以先用搜索引擎提供的移除工具做临时处理,再等 noindex 生效。
一句话记法:robots.txt 决定“来不来”,noindex 决定“收不收”。两者叠加使用时,先想清楚爬虫到底能不能读到那条 noindex。