排查收录时,很多人盯着内容质量、内链和外链,却忽略了一个更靠前的问题:页面从一开始就没被允许进入索引。robots.txt 和 noindex 是两道位置不同的闸门,管的事情不一样,一旦被当成同一个开关用,就容易出现该收录的进不来、想清掉的又清不掉。
先分清两个开关分别管哪一步
搜索蜘蛛处理一个 URL,大致会经过发现、抓取、读取内容、判断是否编入索引这几步,这两道闸门卡在不同环节。
- robots.txt 作用在抓取环节,告诉蜘蛛哪些路径不要来抓,属于请求层面的限制。被 Disallow 的 URL 仍可能因为外链或历史记录出现在索引里,只是抓不到最新内容。
- noindex(meta robots 或 X-Robots-Tag)作用在索引环节,要求蜘蛛先抓取页面、读到这条指令,再把页面排除在索引之外。
关键差异就在这里:noindex 要生效,页面必须先被抓取到。如果同时用 robots.txt 挡住了抓取,noindex 就永远传达不出去。
几种常见的自己挡自己
1. 用 robots.txt 屏蔽目录来做去重
有些站点为了减少重复内容,直接把参数页、筛选页所在目录整段 Disallow。结果是这些 URL 抓不到,页面上的 canonical 和 noindex 也读不到,索引里的旧版本反而更难清理。想把页面排除出索引应该用 noindex,robots.txt 更适合挡那些抓了也没用、还占用抓取预算的路径。
2. noindex 和 robots.txt 同时加在同一个页面
典型情形是开发阶段给测试页加了 noindex,上线前又在 robots.txt 里把整个目录挡住,以为是双保险。实际效果是蜘蛛进不来,noindex 读不到。如果这些 URL 之前被收录过或有过外链,它们可能长期留在索引里,只是停留在旧快照。
3. 响应头里的 X-Robots-Tag 被忽略
非 HTML 资源没法写 meta 标签,排除索引要靠 X-Robots-Tag 响应头。有些服务器或 CDN 配置会顺手带上它,平时没人注意。排查时除了看页面源码,也要看一眼响应头。
4. 上线后忘了改回 robots.txt
预发布环境常见 Disallow: /,切换正式域名时若沿用同一份配置,整站会被挡在抓取之外。这种情况在日志里表现为蜘蛛几乎不来,容易被误判成被惩罚。
排查顺序建议
- 确认目标 URL 是否在 robots.txt 允许范围内,注意通配符和目录写法,别被一条顺手加上的规则意外覆盖。
- 看实际返回的 HTML,确认 meta robots 的真实取值,是 noindex 还是 none,有没有被模板条件拼错。
- 检查 HTTP 响应头里的 X-Robots-Tag,尤其是 PDF、图片这类资源。
- 确认两处没有互相打架:需要收录的页面,robots.txt 放行、页面不含 noindex;需要排除索引的页面,允许抓取、只加 noindex。
处理原则可以简单记成两句话
不想让它出现在搜索结果里,用 noindex;不想让它被抓,用 robots.txt。要删索引就别挡抓取。
另外要注意,去掉 noindex 后索引不会立刻恢复,需要重新抓取和评估,这个过程有延迟。改完配置后,可以通过站点地图、内链或手动提交的方式推动蜘蛛重新访问,然后按天观察,而不是改完就守着看。
收录问题的排查顺序,通常是从能不能抓,到抓到了看到什么,再到看完要不要收。robots.txt 和 noindex 属于前两步,先把这两道闸门核对清楚,后面的内容质量、内链和 URL 规范才有讨论的意义。