robots meta标签需写为,关键词须纯小写、英文逗号分隔,置于中且首次渲染前加载,仅对当前页生效。

robots meta标签怎么写才有效
不加 meta name="robots",搜索引擎默认会索引并跟随链接;加了但写错值,等于没加。最常见的是把 noindex 拼成 no-index 或 noIndex,浏览器不报错,但爬虫直接忽略。
-
content值必须是英文逗号分隔的纯小写关键词,如noindex,nofollow,空格、大小写、连字符都会失效 - 只对当前页面生效,不能控制子路径(比如
/admin/下所有页得每页都加) - 放在
里,且必须在首次渲染前加载——用 JS 动态插入的meta标签,爬虫基本看不到 - 和
robots.txt不同:后者管“能不能抓”,这个管“抓了之后怎么处理”
rel="nofollow" 是不是能阻止索引
不能。rel="nofollow" 只影响链接权重传递和爬虫是否跟随该链接,对当前页面是否被索引完全无影响。很多人以为给导航链接加了 rel="nofollow" 就能隐藏后台页,结果首页依然被收录,后台页也因有内链被顺带抓走。
- 想隐藏某页,必须在该页 HTML 的
中加<meta name="robots" content="noindex"> -
rel="nofollow"适合用在用户生成内容里的外链、广告链接、登录跳转等不需要传递权重的地方 - 现代爬虫(如 Googlebot)已将
rel="nofollow"视为提示而非指令,不保证一定不跟踪
HTTP 头里设置 X-Robots-Tag 和 meta 标签冲突吗
不冲突,但有优先级:X-Robots-Tag HTTP 响应头优先级高于 meta name="robots"。如果两者同时存在且矛盾(比如头里是 noindex,meta 里是 index),爬虫以头为准。
- 动态生成的页面(如 SSR、CDN 缓存页)更适合用 HTTP 头控制,避免模板漏写或 JS 渲染延迟问题
- 静态 HTML 文件只能靠
meta,因为没法发自定义响应头 - 注意 CDN 或反向代理可能过滤或覆盖
X-Robots-Tag,上线前要用curl -I实测响应头是否透出 - 值的写法和 meta 一致,例如:
X-Robots-Tag: noindex, noarchive
noarchive 和 nosnippet 有什么实际区别
noarchive 禁止搜索引擎缓存快照,nosnippet 禁止在搜索结果中显示摘要(包括标题、URL、描述三部分),但页面仍可被索引和点击进入。很多人误以为 nosnippet 能隐藏页面,其实只是不显示描述文字而已。
立即学习“前端免费学习笔记(深入)”;
-
noarchive对需要实时性高的页面有用(如活动倒计时页),避免用户点“缓存”看到过期内容 -
nosnippet适合含敏感字段的表单页、API 文档页,防止关键参数或错误信息暴露在搜索摘要中 - Google 还支持更细粒度的
max-snippet:-1(禁全部摘要)、max-image-preview:none(禁图片预览),但兼容性不如基础指令 - 这些指令不影响排名,只影响搜索结果展示形态
真正难的是判断“该不该索引”——比如分页列表的第 20 页、带大量筛选参数的 URL、A/B 测试分支页。这类情况光靠 meta 标签不够,得配合 canonical、参数归一化、甚至 robots.txt 屏蔽参数路径。细节一旦漏掉,爬虫就会把重复或低质内容当成独立页面收录。











