meta name="robots" 不引导抓取,仅控制抓取后的处理;其生效前提是页面已被爬虫成功抓取,且格式必须严格小写、无空格、英文逗号分隔;SPA中JS动态插入无效,需服务端渲染确保原始HTML中存在。

meta name="robots" 根本不引导抓取,只管抓完后怎么处理
很多人以为加了 content="index,follow" 就能“引导”爬虫来抓,其实不是。搜索引擎决定要不要抓一个页面,第一步永远是查 robots.txt;如果那里写了 Disallow: /private/,爬虫连请求都不会发,<meta name="robots"> 压根没机会被读到。所谓“引导”,其实是靠链接曝光、sitemap 提交、外链建设这些手段,而不是靠这个 meta 标签。
这个标签唯一能做的,是告诉爬虫:“我允许你进来,但进来之后——别索引我(noindex)、别点我页上的链接(nofollow)、别存快照(noarchive)”。它只在抓取成功后生效。
content 值必须小写、无空格、逗号分隔,错一个字符就失效
拼写和格式极其敏感,主流爬虫(Google、Bing)只认严格格式:
-
noindex,nofollow✅ 正确(小写、英文逗号、无空格) -
noindex, nofollow❌ 失效(逗号后有空格) -
NOINDEX,FOLLOW❌ 部分旧爬虫忽略大写 -
no-index,nofollow❌ 连字符错误,整个指令被跳过 -
none⚠️ 等价于noindex,nofollow,但兼容性略差,不推荐
中文逗号、全角符号、顿号、多余换行或注释包裹,都会导致解析失败。验证方式:右键 →「查看网页源代码」→ 搜索 <meta name="robots">,确认它出现在原始 HTML 的 <code> 里,且早于其他冲突 meta(比如重复的 name="robots")。
SPA 页面里用 JS 动态插入 meta robots?基本等于没写
React/Vue 等单页应用如果靠 useEffect 或 document.write 往 插入 <meta name="robots">,Googlebot 等主流爬虫不会执行 JS,也不会等渲染完成,直接忽略。
真正起作用的方式只有两种:
- 服务端渲染(SSR)或静态生成(如 Next.js 的
getStaticProps),确保标签在首次 HTTP 响应的 HTML 中原生存在 - 服务端根据 URL 路径,在 HTTP 响应头中返回
X-Robots-Tag: noindex(优先级高于 meta 标签,且适用于非 HTML 资源)
CDN 缓存了带错误 meta 的 HTML?那爬虫看到的就是错的。务必检查原始响应体,而非浏览器开发者工具里渲染后的 DOM。
noindex 和 nofollow 是独立开关,混搭要清楚目的
它们不是绑定对,组合逻辑取决于你要解决什么问题:
-
noindex,follow:适合分页页(如/blog?page=2)——不让它进搜索结果,但保留它链出的下一页、归档页的发现能力 -
noindex,nofollow:适合登录页、用户中心、测试环境页——既不想被搜到,也不希望爬虫顺着页脚“关于我们”乱爬到不该去的地方 -
index,nofollow:慎用。页面可被收录,但外链不传权重,容易被视作操纵信号,仅限极少数广告落地页场景
漏掉 nofollow 却用了 noindex?爬虫仍会顺着你页面里的所有链接爬下去,可能把后台接口、未授权 API 路径都暴露给搜索引擎。


















