noindex / nofollow / disallow 区别与选用

三个 SEO 控制项做三件不同的事。选错了,要么页面漏进索引、要么浪费抓取预算、要么把页面藏到连 Google 都掉不掉。

noindexnofollowDisallow 在文档里长得很像,但在线上行为差别巨大。一个是「别出现在搜索结果里」,一个是关于链接信号的提示,一个是「连抓都别抓」。选错了,要么页面漏进索引,要么抓取预算被垃圾页消耗光,要么把页面藏到 Google 连「丢掉」都做不到。

一句话结论

  • 想让页面从结果里消失:noindex(meta 标签或 X-Robots-Tag 响应头)。务必确认 robots.txt 没有同时屏蔽这个 URL,否则 Google 根本看不到这条指令。
  • 想让爬虫完全跳过某个重路径: 在 robots.txt 用 Disallow,并接受一个事实——如果有外链指向它,URL 仍可能没摘要地出现。
  • 想停止为某条链接背书:rel="nofollow",或更精确的 rel="sponsored" / rel="ugc"。截至 2026 年 6 月,这些是「提示」,不是硬性指令。
  • 绝对不要在同一个 URL 上同时挂 noindexDisallow。屏蔽会让 Google 读不到 noindex,URL 反而卡死在索引里。

三个机制,三个问题

这三个控制项源自三个不同年代、三个不同的问题。

控制项写在哪里做什么抓取阶段
Disallowrobots.txt「别抓这个路径」(1994 年的原始 robots 标准)抓取之前
noindex<meta> 标签或 X-Robots-Tag HTTP 头「抓可以,但别放进搜索结果」抓取之后
nofollow / sponsored / ugc单条链接上的 rel 属性「不为这条链接背书 / 不通过它传信任」逐条链接

它们写在不同文件里、在不同阶段触发、解决不同问题。最大的误区是把「阻止抓取」和「阻止收录」当成同一根杆子——其实它们正好相反:Disallow 阻止抓取,noindex 需要先被抓到。

怎么判断自己遇到的是哪个问题

  • staging 页、购物车页或感谢页出现在 site:yoursite.com 结果里。
  • Search Console 的 Pages 报告里有 「Indexed, though blocked by robots.txt」——两头都没占到的最差状态。
  • 想藏页面,给 robots.txt 加了 Disallow,URL 还是出现在结果里,只是没了描述。
  • 登录、购物车、admin 这类不该收录的页面在内链里吸走链接权重。

Disallow vs noindex 的陷阱

这是最常见的一个 bug,Google 官方文档也直接点名:「要让 noindex 规则生效,页面不能被 robots.txt 屏蔽。」

想藏一个页面,于是在 Disallow 里加上它。Google 听话,不再抓——但这个 URL 之前已经收录过了,现在 Google 抓不到页面,就看不到你顺手加的 noindex。结果 URL 永远留在索引里,只是没了摘要。

修复有严格的顺序:

  1. 先删掉 robots.txt 里的 Disallow
  2. 加上 noindex(meta 标签或响应头),让 Google 重新抓。
  3. 等 URL 下架后,视情况加回 Disallow(如果你还想顺带阻止抓取)。
<!-- 页面级 noindex:「别展示这页」最稳的默认值 -->
<meta name="robots" content="noindex, follow">
# robots.txt——阻止抓取,但不阻止收录
User-agent: *
Disallow: /search?
Disallow: /admin/

如果你只针对 Google,可以指定它的爬虫:<meta name="googlebot" content="noindex">。而普通的 robots 值对所有遵守规范的爬虫都生效,所以一般优先用它,除非有特别理由。

什么时候该用 nofollow

nofollow 是链接级别的,不是页面级别的。它说的是「我不为这条链接的去向背书」或「这是付费投放」。自 Google 2019 年 9 月的调整(2020 年 3 月 1 日起生效)以来,nofollowsponsoredugc 被当作提示而非硬性命令——Google 仍可能抓取目标页并用它做上下文判断。它们能稳定地不传递排名信任,但不再保证链接被完全忽略。

用在你编辑上不背书的外链上:

<a href="https://example.com" rel="nofollow">不背书的去向</a>
<a href="https://partner.com" rel="sponsored">付费投放</a>
<a href="https://forum-comment.com" rel="ugc">用户评论</a>

当一条链接既是用户生成又是付费时,可以组合写:rel="ugc sponsored"。不要用 nofollow 去「省链接权重」给外链数量封顶——那套玩法早就失效,现在反而像作弊信号。

决策表

目标用这个注意事项
不想出现在结果里,但允许 Google 抓只用 noindexrobots.txt 不能屏蔽这个 URL
爬虫永远别抓某个重路径 / 无限组合只用 DisallowURL 仍可能没摘要地出现
停止通过一条链接传信任nofollow / sponsored / ugc截至 2026 年 6 月是提示,不是指令
让页面彻底消失noindex、重新抓取、再视情况 Disallow或返回 410 Gone / 直接删除
让整个 staging 站不收录X-Robots-Tag 响应头加 noindex,或挂 HTTP auth绝不能用裸的 Disallow: /

非 HTML 文件用 X-Robots-Tag

noindex 有两种写法:<meta> 标签(HTML 页面用)和 X-Robots-Tag 响应头(其它一切用)。PDF、JSON 接口、图片、任何响应不是 HTML 的 URL 都挂不了 meta 标签,得在服务器或 CDN 层用响应头。

X-Robots-Tag: noindex, follow

Google 文档说这两种方式「效果相同」,按内容类型选方便的那个即可。具体在哪里设置:

  • Firebase Hosting:firebase.jsonheaders 块里配一条带 source 通配(比如 **/*.pdf)的规则。
  • Nginx: 在对应的 location 块里写 add_header X-Robots-Tag "noindex, follow";
  • Cloudflare: 用 transform rule,或写一个追加这个响应头的 Worker。

各信号的生效时间

  • noindex 下架: Googlebot 重新抓到并看到标签后,URL 通常 1–7 天内消失。问题卡在重新抓取本身——Google 文档明说「Googlebot 重访一个页面可能要好几个月」。用 URL Inspection → Request indexing 对该 URL 推一下能加速。
  • Disallow 生效: 下次抓取尝试时生效——热门站点几小时,小站点几天。
  • nofollow 生效: 下次抓取后信任立刻停止流出。已经传过去的 PageRank 不会回收。

如果你需要马上让某个东西消失,Search Console 里的 Removals 工具能快速隐藏一个 URL——但只维持大约 6 个月。它是临时遮罩,不是真正的移除。在窗口过期前,要配上一个永久信号(noindex410 Gone 状态或直接删除),否则 URL 会回来。

还有一个反方向的常见意外:你去掉 noindex 期待页面立刻被收录,但 Google 还得重新抓到才知道。挑一个代表性 URL 去 Request indexing 推一下,其余的几周内跟上。

容易踩的坑

  • 同一个 URL 同时挂 Disallownoindex 屏蔽阻止了抓取,Google 读不到 noindex,URL 留在索引里。这是「Indexed, though blocked by robots.txt」的头号成因。
  • nofollow 当成「别收录这个目标」的信号。 它管的是链接信任,不管目标页的收录。
  • 把 staging 的 Disallow: / 带上线。 线上站默默拒绝抓取好几周,直到有人发现流量见底。
  • 临时屏蔽用过的共享 layout 模板里残留 noindex 然后纳闷为什么整站从搜索结果里消失。
  • 在 canonical 替代页面上加 noindex(分页 ?page=2、语言版本),把合法内容也下架了。
  • 只靠 Removals 工具。 它大约 6 个月就过期,没有永久修复的话页面会回来。

FAQ

  • Disallow 了 URL 是否还会出现在搜索结果?:有时会。如果有外链指向它,Google 可能只列出裸 URL、没有描述。「完全别出现在搜索里」要用 noindex
  • noindex, nofollow 一起用合理吗?:很少合理。noindex 已经把页面从结果里去掉,再加 nofollow 会把通往你自己内容的站内链权也封死。默认用 noindex, follow,除非你真要彻底封闭。
  • rel="sponsored"nofollow 有什么区别?:都表示「不传信任」,但 sponsored 专门声明这是付费投放。准确时 Google 更偏好精确属性,而且截至 2026 年 6 月三者都是提示而非硬规则。
  • noindex 后多久从索引里消失?:一般在 Google 重新抓到标签后 1–7 天——但重新抓取本身可能要几周。用 URL Inspection → Request indexing 加速。
  • Removals 工具和 noindex 有什么不同?:Removals 工具是快速、临时的隐藏(约 6 个月)。noindex 才是永久修复。需要某个东西立刻且彻底消失时,两个一起用。
  • 薄弱的标签、分类页要不要 noindex:只在它们真没价值时。3 篇文章的薄弱标签页应该合并,而不是 noindex。把 noindex 当兜底手段。

相关阅读

外部参考:Google 的 noindex 文档Google 关于标注外链的指南

标签: #独立开发 #SEO #Technical SEO #robots.txt #收录