noindex 必须写在服务端返回的原始 html 的 head 中且格式严格,动态插入、位置错误、大小写或空格错误均无效;纯 csr 应用需用 x-robots-tag 响应头,配合 robots.txt 才能可靠屏蔽爬虫。

noindex 必须写在服务端返回的原始 HTML 里
爬虫只解析首次 HTTP 响应里的 HTML 字符串,不执行 JS,也不等 Vue/React 渲染。你在 useEffect 里动态插入 <meta name="robots" content="noindex">,等于没写。
常见翻车点:
-
<meta>被塞进或放在但位置太靠后(比如在<script></script>标签之后) - 静态站点直接手写进模板;SSR 框架(如 Next.js)必须确保它出现在
getServerSideProps或getStaticProps渲染出的 HTML 中;纯 CSR 应用根本不能依赖这个标签 - CDN 缓存了旧版 HTML(没带 noindex),新标签就一直不生效
content 值大小写和空格错一个就失效
Googlebot 和 Bingbot 对格式极其敏感。写成 NOINDEX、no-index、noindex, nofollow(逗号后有空格)、noindex,nofollow(中文逗号)——全部无效。
正确写法只有这些:
noindexnoindex,follownoindex,nofollow-
none(等价但兼容性略差,不推荐)
别加 noarchive 或 nosnippet:这两个值在 <meta> 标签里自 2023 年起已被 Google 官方弃用,写了也白写。
noindex 单独用容易放跑爬虫,必须配 robots.txt
noindex 是“抓到后别索引”,不是“不准来”。如果页面路径没被 robots.txt 限制,爬虫会照常请求、消耗带宽、甚至把页面当异常信号记录。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
典型错误组合:
- 只在 /admin/login.html 加
<meta name="robots" content="noindex">,但robots.txt里没写Disallow: /admin/→ 爬虫天天刷登录页 - 误以为加了
rel="nofollow"的链接就能让目标页不被索引 → 完全无关,rel="nofollow"只影响链接本身,不影响当前页是否被收录
真正保险的做法是双写:robots.txt 拦访问 + 页面 HTML 里写 noindex,nofollow。前者防主动抓取,后者防被动发现(比如被外链引用)。
SPA 路由页不能靠 meta robots 控制,得用 X-Robots-Tag
React/Vue 的客户端路由(如 /user/profile)返回的初始 HTML 通常是空壳,<meta name="robots"> 在 JS 执行后才注入 —— 爬虫看不到。
此时唯一可靠方式是服务端响应头:
- Nginx:
add_header X-Robots-Tag "noindex,nofollow";(按 location 匹配路径) - Next.js:
headers选项里设X-Robots-Tag: noindex - PHP:
header('X-Robots-Tag: noindex');
X-Robots-Tag 优先级高于 <meta> 标签,且适用于 PDF、JSON、图片等非 HTML 资源。注意 CDN 缓存:如果缓存了带该头的响应,撤掉指令后效果延迟可能长达数小时。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










