noindex 是一条指令,不是一个开关。它的含义是“这个页面可以抓,但不要放进索引”。当你把它去掉之后,页面通常不会立刻回到索引里,而是需要被重新抓取、重新评估。多数排查失败,问题出在把这三件事当成了一件事。
第一层:确认 noindex 是不是真的去干净了
最常见的坑是“以为去掉了”,其实还有另一处在输出。同一个 noindex 可能来自多个位置,改动时要逐一确认。
- HTML 里的 meta robots 指令。模板、组件、页面级配置都可能写入,改了一处,另一处还在渲染。
- HTTP 响应头里的 X-Robots-Tag。它对非 HTML 资源同样有效,容易被忽略,而且往往和 meta 同时生效。
- CDN、反向代理或安全策略统一下发的规则。改代码不起作用,因为指令是在请求链路上加上的。
- 多域名、多协议、多路径版本。你放行的可能是 A 版本,而索引里记住的是 B 版本。
核对方式很直接:用抓取工具看原始响应,不要只看渲染后的页面,也不要只看自己电脑上的浏览器。
第二层:确认爬虫能拿到新版本
这一步是把“我改了”变成“爬虫看到了”。这层不通,后面的判断都没有意义。
- 缓存层。CDN、边缘节点、对象存储可能还挂着旧 HTML,需要回源确认实际返回的内容。
- 抓取频次。大批页面长期处于 noindex,相关 URL 的抓取优先级会下降,放行之后需要一段时间恢复。
- 入口信号。内链、站点地图、列表页是否还指向这个 URL。入口被删掉,重新发现的概率就明显降低。
第三层:重新抓取和重新收录是两件事
页面被重新抓取,说明爬虫读到了新版本;能不能进入索引,还要看内容质量、与站内其它 URL 的重复关系以及站点整体信号。曾经被 noindex 的页面,不会因为一次抓取就自动恢复。
抓取是读取,索引是入库。放行指令只解决“允许读”,不解决“值不值得收”。
恢复时间因站而异,主要取决于该目录的抓取频次、页面本身的更新频率和站点的整体抓取规模。短则几天,长则数周,这里没有统一答案。
按顺序核对的清单
- 用抓取工具确认 HTML 和响应头里都不再输出 noindex。
- 确认返回状态码为 200,内容不是空页、错误页或跳转页。
- 确认缓存返回的是新版内容,而不是改动之前的版本。
- 确认页面仍有有效内链入口,站点地图中包含该 URL。
- 在搜索后台手动请求抓取,观察抓取状态是否更新。
- 等待若干天,观察已排除分类中的状态是否不再标记为 noindex。
几个容易踩的坑
- 把 noindex 和 robots.txt 混着用。被 robots.txt 屏蔽的页面,爬虫读不到 noindex,指令等于失效。
- 反复切换 noindex 又放行。频繁变更会让爬虫降低对该目录的抓取意愿。
- 只放行了入口页,列表页和详情页仍是 noindex,导致抓取链路断开。
- 页面本身质量不过关。放行前先看内容厚度和是否与站内其它页高度重复,否则可能以“重复网页,未选择规范版本”的状态停留。
整体思路是:先确认指令层干净,再确认抓取层能看到,最后才谈索引层的恢复。顺序颠倒,就容易在错误的地方反复排查,越改越乱。