noindex 是站点给搜索引擎的一份声明:这个页面可以来抓,但请不要把它放进索引。它和 robots.txt 屏蔽抓取不是一回事,前者管的是“能不能收”,后者管的是“能不能抓”。很多索引问题反复出现,根源就是把这两个开关用反了。
为什么要专门检查 noindex
如果先用 robots.txt 拦住某个目录,蜘蛛拿不到页面内容,自然也读不到页面里的 noindex。此时指令等于没写,URL 仍可能因为外部链接而被记录,只是没有摘要。反过来,该抓的页面被批量加上 noindex,内容就再难进入索引,栏目权重也会慢慢被稀释。
robots.txt 管的是“能不能抓”,noindex 管的是“能不能收”。把两者当成同一种开关,是很多索引问题反复出现的根源。
三个投放位置各自能做什么
meta robots
写在页面 head 里的 meta 标签,只对当前这一个 HTML 页面生效。常见组合是 noindex, follow(不收录,但链接继续传递)和 noindex, nofollow(两者都切断)。大多数情况下,如果只是不想让页面出现在结果里,保留 follow 更稳妥。
X-Robots-Tag
通过 HTTP 响应头下发,适合 PDF、图片、视频、JSON 等非 HTML 资源,也可以按目录批量配置。它的优势是不依赖页面渲染,服务器返回什么就是什么,做批量策略时比模板改代码更省事。
robots.txt
不能用来做 noindex。它只控制抓取范围,被屏蔽的 URL 若仍被外部链接指向,依然可能以无描述的形式出现在结果里。把它当作“省抓取预算”的工具可以,当作“从索引里删掉”的工具不行。
哪些页面适合考虑 noindex
- 站内搜索结果页,以及多层筛选组合出来的参数页
- 用户中心、订单详情、登录后可见的私有页面
- 打印页、纯排序副本、同一内容的重复列表
- 尚未定稿的预览地址和测试环境入口
- 已经废弃但仍有内链残留的旧栏目
一份可执行的自查清单
- 先列出所有下发 noindex 或 X-Robots-Tag 的来源:页面模板、目录配置、CDN、反向代理可能各有一套,确认它们不会互相覆盖。
- 确认这些 URL 没有被 robots.txt 同时屏蔽,否则指令读不到。
- 检查 meta robots 是否由前端脚本动态写入,客户端渲染出来的指令,蜘蛛不一定来得及执行。
- 核对分页:第一页保留可索引,后续页码是否被整段误加 noindex,导致内容无法顺着链接被发现。
- 检查 noindex 与 canonical 是否互相冲突。把主版本指向一个被 noindex 的地址,声明就没有意义。
- 旧地址下线时想清楚用 301 还是 noindex。长期挂着 noindex 的废弃页,既不传递权重,也继续占着抓取额度。
- 上线后用命令行查看响应头,或借助抓取工具确认 X-Robots-Tag 真的存在,别只信配置面板上的开关。
几个容易忽略的点
noindex 生效需要时间,撤掉之后重新被处理同样需要时间。不要在“加”和“撤”之间频繁横跳,否则站点状态会长期处于中间态。
给整个目录批量加 noindex 之前,先在少量 URL 上验证效果,确认无误再放开,避免一次误操作把整站栏目挡在索引之外。
X-Robots-Tag 可以组合多条指令,但不同搜索引擎对部分指令的支持范围并不完全一致。写法上尽量保守,只保留明确需要的那几项,不做没必要的堆叠。
小结
noindex 不是隐藏按钮,而是一份声明。位置放对、组合写对、在合适的层级验证,站点结构才不会因为一堆不该出现的页面而变得松散。把上面这份清单定期过一遍,比出问题后一条条排查要省力得多。