noindex 什么时候该用:写了不生效,多半是 robots.txt 挡住了
noindex 让页面照常能打开、但不进搜索结果 —— 前提是爬虫被允许抓到它。在 robots.txt 里屏蔽掉这个网址,等于让这条规则永远没机会被读到。这里有四种工具的判读表、两种可粘写法,和一个从 robots.txt 查起的排查顺序。

页面还得能打开、但不该出现在搜索结果里,这时候才用 noindex;只是想「清理一下」的话,多半什么都不用做。这条规则生效的前提是爬虫被允许抓到这一页并读到它,所以在 robots.txt 里把网址屏蔽掉并不能藏住它 —— 那只是让这条指令永远没机会被看见。多数人想藏起来的页面,其实放着不动就好。
读这篇前
你需要能往页面 <head> 里加一个 <meta> 标签,或者能设一个响应头。你还需要一个具体的理由。「这页没流量」不算理由 —— 一个没流量的页面不花你什么钱,把它从索引里拿掉也换不回什么。这一篇讲的是「这一页存在于搜索结果里本身就是个问题」的那些情形。
用 WordPress、Shopify、Webflow 这类系统的话,后台一般有一个「不让搜索引擎收录本站」的开关,它做的就是往全站页面上加这条规则。那个开关是站级的,不是页级的,所以它解决不了本篇讲的任何一种情况,反而是本篇最后一节要讲的那场事故的常见起点。
为什么 noindex 和 robots.txt 是反着来的
这两样听上去像是同一件事的两种力度。它们其实是两套机制,一起用会把你真正想要的那一个抵消掉。Google 的 noindex 文档(2026-08-24 读)把这层依赖写得很直接:
「For the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler.」
同一段还把失败的样子说完了:「If the page is blocked by a robots.txt file or the crawler can't access the page, the crawler will never see the noindex rule, and the page can still appear in search results, for example if other pages link to it.」
这句值得读两遍,因为它和直觉是反的。Disallow 是抓取层的指令,说的是「别来取」;noindex 是索引层的指令,而它就写在你刚刚禁止对方去取的那个东西里面。一个被 Disallow、同时又被别处链接的网址,可能以「只有一行地址、没有任何描述」的样子出现在结果里 —— 这是两头都没落着好:你看不见它,别人看得见。
Google 还补了一句:把这条规则写进 robots.txt 文件本身是无效的 ——「Specifying the noindex rule in the robots.txt file is not supported by Google.」
四种工具,各自到底做了什么
「怎么把这一页弄出搜索结果」这类问题,几乎都是在这张表里选对一行就答完了,跟实现细节没什么关系。
| 工具 | 它做的事 | 什么时候用 |
|---|---|---|
noindex | 把页面从结果里去掉,仍会被抓 | 页面得能用,但不该排名 |
rel="canonical" | 把信号合并到另一个网址 | 是某个要留的页面的副本 |
Disallow | 拦住抓取,拦不住被列出 | 省抓取成本,不是为了藏 |
| 什么都不做 | Google 自己决定排不排 | 内容单薄但无害的页面 |
第二行是清理到一半最容易踩的。Google 的网址规范化文档明说不建议「using noindex to prevent selection of a canonical page within a single site, because it will completely block the page from Search」。两个网址装着同一份内容,你给其中一个上 noindex,那不叫合并 —— 那是把一个从搜索里删掉,同时把重复内容这个问题原样留着。这两件事怎么分,见 canonical 标签怎么写。
第三行也值得说一句:Disallow 有它对的场合,但那个场合是「这批网址多到会把抓取额度吃光」,比如可以无限往后翻的日历页、几个筛选条件排列组合出来的上万个地址。判据是数量,不是「我不想让人看见」。数量不是问题的时候,用它只会换来一批没有描述的搜索结果。
哪些页面值得上这条规则
清单很短,本来就该很短。下面这几类有一个共同点:页面必须继续对人可用,而它出现在搜索结果里会带来真问题,不只是看着不舒服。
- 站内搜索结果页。它能生成无穷多个网址,而且自己答不了任何问题。
- 下单成功页、感谢页,只有在某个动作之后才有意义。
- 要给客户看、因此必须公开可访问的预览地址和测试环境。
- canonical 覆盖不了的筛选组合页 —— 每一个组合确实是一批不同的商品。
- 需要留资才给的资料文件:落地页你想排名,文件本身不想。
注意这里没有的是:老文章、内容单薄的页面、没流量的页面。把它们从索引里拿掉,并不会把什么东西重新分配给站上其余页面。如果担心的是它们在和一个更好的页面抢词,那是 canonical 或者合并要解决的事,不是 noindex。
交付物:两种写法,加一个排查顺序
meta 标签写法,放 <head> 里。第一条对所有支持这条规则的引擎生效,第二条只针对 Google:
<meta name="robots" content="noindex">
<meta name="googlebot" content="noindex">
响应头写法。PDF、视频、图片这类文件只能用它,因为它们根本没有 <head> 可以放标签:
HTTP/1.1 200 OK
X-Robots-Tag: noindex
Google 文档确认两者等价 ——「They have the same effect; choose the method that is more convenient for your site and appropriate for the content type.」,而响应头的适用范围是「non-HTML resources, such as PDFs, video files, and image files」。规则也可以组合,例如 <meta name="robots" content="noindex, nofollow" />。
一周之后页面还在结果里的话,按这个顺序查。顺序是有讲究的:四步里有三步都比大家第一时间去查的那一步便宜。
- 这个网址是不是在 robots.txt 里被
Disallow了?是的话爬虫压根没见过这条规则,先解开。 - 加完规则之后页面被重新抓过吗?Google 自己的说法是「depending on the importance of the page on the internet, it may take months for Googlebot to revisit a page」。
- Googlebot 实际收到这个标签了吗?用网址检查工具看 Googlebot 拿到的 HTML,不是看你浏览器里的那份。
- 到这一步才轮到怀疑实现写错了。
第 3 步是前端渲染的站最常栽的地方:标签在 JavaScript 跑完之后的 DOM 里,而下发的 HTML 里没有。这个差别可以自己看,查一下爬虫从这个页面收到了什么。
代价最大的一种失败:没人打算发出去的那条 noindex
这一篇里每条规则都可以撤回,只有这一种是「发现之后才能撤回」。测试环境一般被配置成不让自己被收录,而那份配置往往和生产环境共用同一个模板、同一套主题或者同一个环境变量。两边一合并,或者内容系统里那个「不让搜索引擎收录」的开关活过了上线这一步,整站就带着这条规则出去了。
它的安静程度和大多数事故不一样。站是好的,页面能渲染,什么都不报错。只是流量一直不来 —— 而新站本来就没有基线,这种「没有」看起来就像一个新域名正常的慢启动。好几周都很像。
这个检查对自己首页发一次请求就够了,值得放进部署之后要跑的那份清单里。
curl -sIL https://example.com/ | grep -i 'x-robots-tag'
curl -sL https://example.com/ | grep -io '<meta[^>]*robots[^>]*>'
任意一条在你想排名的页面上打出 noindex,别往下读了,先去修那个。Search Console 的网页索引报告里这个状态是有专门名字的 ——「被“noindex”标记排除」,所以有历史数据的站过一两天也会告诉你。命令快一些,而且在资源所有权还没验证的时候就能用。
noindex 做不到的事
它不是隐私控制。页面依然公开、依然被链接、依然能被任何不理会这条规则的东西抓走。Google 文档对自己的承诺划了范围:「some search engines might interpret the noindex rule differently. As a result, it is possible that your page might still appear in results from other search engines.」真正不能被读到的东西,要的是鉴权,不是一个 meta 标签。
它也不快。规则在下一次抓取时才落地,急用的场合 Google 自己的指引是去用删除工具。今天就要它消失的话,noindex 是错的工具。
它更不是排名杠杆。没有任何一份文档写过「把页面从索引里拿掉能抬升剩下的页面」。索引小一点这件事的正当理由是大站的抓取效率,而一个几百页的站根本没有这笔账可算。
网页索引报告说这条规则被读到了,就到此为止。没有第二个「更彻底一点」的状态可以追。
常见问题
noindex 是什么意思
它是一条规则,写成 meta 标签或者 HTTP 响应头,告诉搜索引擎别把这一页放进结果。Google 描述的效果是把页面「entirely from Google Search results, regardless of whether other sites link to it」地去掉 —— 但前提是爬虫已经抓到这一页并读到了这条规则。
该用 noindex 还是 Disallow
在意「会不会被列出来」就用 noindex,在意「会不会被抓」就用 Disallow。两个一起用等于爬虫永远读不到 noindex,这是这件事出错最常见的方式。这两种信号在首页上其实都很少见,我们测过:28 个首页里 7 个写了 meta robots,27 个里只有 1 个发了 x-robots-tag。
noindex 能让页面从别的引擎里消失吗
只对支持这条规则、而且已经重新抓过这一页的引擎有效。Google 自己的措辞就承认了这个限度。把 noindex 当成一个多数爬虫认的请求,不要当成一个开关。
标签页和分类页要不要 noindex
一般不要。爬虫正是靠它们发现下面那些页面的,而把它们从索引里拿掉并不影响这个职责 —— 只是把它们凭自己名字排名的可能性一起拿掉了。先修或者先合并,noindex 是最后一个选项,不是最省事的那个。
本文属于 QueryWin 实操手册 · 第 3 阶


