给页面加 noindex 之后,隔一段时间去查,发现它仍然留在索引里;或者反过来,明明希望它被收录,却始终不进索引。遇到这种情况,先别急着改内容,先核对页面级收录指令本身是否真的生效。收录指令有好几种下发方式,它们的作用层和覆盖范围并不一样,写错一层,整条规则就可能落空。
先确认指令写在了哪一层
常见的三种下发方式:
- HTML meta 标签,写在 head 里,例如 name 为 robots、content 为 noindex 的写法。
- HTTP 响应头 X-Robots-Tag,由服务端返回,适合 PDF、图片这类非 HTML 资源。
- robots.txt,它管的是抓取,不是收录。屏蔽抓取之后,地址可能仍留在索引里,只是内容不再更新。
核对时看原始响应最省事:用命令行查看响应头,再查看未渲染的 HTML 源码。浏览器里点开“查看源代码”,有时已经是前端处理过的结果,容易误判。
几种常见的冲突写法
meta 与响应头同时存在
两层都写 noindex,通常不会出问题;如果一层写 noindex、另一层写 index,就要先分清谁更具体、谁后出现。稳妥的做法是只保留一层,另一层删掉,别自己给自己制造歧义。
noindex 与 canonical 互相矛盾
想移除的页面,canonical 却指向一个希望保留的地址,两个信号方向相反,处理结果就不好预判。排除类页面建议让 canonical 指向自身,或者干脆去掉不写。
指令拼写和限定范围出错
content 里多一个空格、把 noindex 写成 no-index、爬虫名称拼错,都可能让指令失效。另外,指令后面若跟了具体的爬虫名,就只对那一个生效,其他爬虫照常处理,这一点在只看某个后台报表时最容易被忽略。
前端动态插入的 meta
等脚本执行完才插入的 meta 标签,不保证一定被读到。确实要排除的页面,指令最好写在服务端输出的 HTML 里。
一条可以照着走的核对顺序
- 看未渲染源码,确认 meta 是否存在、拼写是否正确、是否在 head 范围内。
- 看响应头里有没有 X-Robots-Tag,它和 meta 是否打架。
- 看 robots.txt 是否屏蔽了该路径,分清“抓取屏蔽”和“收录移除”是两件事。
- 看该地址是否还被其他已收录页面用内链指向,这会影响它被重新处理的频率。
- 用站长后台的网址检查功能看该地址当前的判定,作为交叉验证,不要只信一个口径。
- 记住改动时间,给移除或回归留出观察期,改完当天就下结论往往不准。
被排除的页面还要不要留内链
如果页面确实要长期排除,内链留着问题不大,但要接受抓取被浪费;如果只是临时排除,建议减少内链,别把信号持续导向一个不打算展示的地址。反过来,想让某个页面被收录,如果它的入口全都堆在页脚、导航或脚本里,可能长时间发现不了,这时问题就不在 noindex 上,而在入口本身。
移除 noindex 之后要看什么
把 noindex 去掉、恢复为可收录之后,页面重新进入索引一般需要时间,长短取决于抓取频次、内链入口是否稳定。这段时间与其反复提交,不如先把入口和内容本身检查一遍,确认没有别的阻断因素。
收录指令更像开关,而不是加速器。开关写对了,也只是让页面具备了被处理的前提。