仅控制爬虫抓取后的处理,不阻止访问;必须由服务端静态注入,js动态添加无效,且需与robots.txt配合使用才稳妥。

直接加 <meta name="robots"> 不等于页面就隐身了——它只管“抓完之后怎么处理”,不管“让不让你进门”。
meta name="robots" 只对 HTML 页面生效,且必须静态写死在服务端输出的 里
爬虫不执行 JavaScript,也不等 Vue 或 React 渲染完再读标签。用 mounted、useEffect 或 document.write 动态插入的 <meta name="robots">,Googlebot 和 Bingbot 基本看不到。
- 静态站点:手写进 HTML 模板,位置紧接
<meta charset>后,确保在内部 - SSR 框架(如 Next.js、Nuxt):确认该标签由服务端首次响应输出,而非 hydration 后补
- 纯 CSR 应用(如默认 Create React App):无法靠此标签控制路由页,必须改用
X-Robots-Tag响应头 - 验证方式:右键 →「查看网页源代码」→ 搜索
<meta name="robots">,必须真实存在、拼写准确、位于 <code>中
content 值大小写、空格、逗号一个都不能错
主流爬虫(尤其旧版 Bingbot)对格式极其敏感,错一个字符整条指令失效。
- ✅ 正确:
noindex,nofollow、noindex,follow、none - ❌ 错误:
NOINDEX, NOFOLLOW(大写+空格)、no-index,nofollow(连字符)、noindex, nofollow(逗号后空格)、noindex,nofollow(中文逗号) -
none等价于noindex,nofollow,但部分老爬虫兼容性差,推荐显式写全 -
noarchive和nosnippet在<meta>中基本已不被 Google 支持,仅响应 HTTP 头,别白加
noindex,follow 和 noindex,nofollow 效果天差地别
两者都让当前页不被收录,但对页面内链接的处理完全不同——选错会意外放行子页面,或切断首页权重传递。
-
noindex,follow:适合分页(/blog?page=2)、筛选页、排序页——不索引本页,但允许爬虫顺着“下一页”“相关文章”等链接发现新内容 -
noindex,nofollow:适合登录页、测试环境页、用户私有页——既不想被搜到,也不希望爬虫乱点页脚的“关于我们”“帮助中心”等链接 - 错误示例:搜索结果页加了
noindex却漏写nofollow→ 爬虫虽不存这页,却顺着商品链接抓取全部详情页 - 错误示例:后台登录页加了
noindex,nofollow,但页脚有“文档中心”链接 → 文档中心失去重要入口权重
别只靠 meta robots,关键页面必须和 robots.txt 双保险
robots.txt 控制“能不能抓”,<meta name="robots"> 控制“抓了之后怎么处理”。单靠一个,风险极高。
- 只在
robots.txt里写Disallow: /admin/,但某天外链指向/admin/login.html,而该页没加noindex→ 它仍可能以“URL-only”形式出现在搜索结果中 - 只在页面加
noindex,但robots.txt没屏蔽对应路径 → 爬虫照常抓取,白白消耗抓取配额 - 稳妥做法:对关键私有路径,
robots.txt禁止抓取 + 页面加<meta name="robots" content="noindex,nofollow"> - 注意:
robots.txt的Disallow是前缀匹配,不是正则;想屏蔽所有 API 路径,得写Disallow: /api/(末尾斜杠不能少)
最容易被忽略的是缓存陷阱:CDN 或反向代理若缓存了带 X-Robots-Tag: noindex 的响应,之后即使撤掉指令,页面也可能长期无法被索引——上线前务必检查缓存策略。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











