蜘蛛池入口页大多是批量生成、模板化上线的,模板里一旦带了 robots 相关指令,就可能被复制到成百上千个页面上。meta robots 和 X-Robots-Tag 正是最容易被忽略的两个位置:它们不直接决定抓取速度,却直接影响蜘蛛抓完之后愿不愿意留下这个页面。
一、meta robots 与 X-Robots-Tag 的区别
两者表达的是同一件事——告诉蜘蛛这个页面能不能被索引、能不能被跟踪链接、能不能展示摘要。区别在于承载位置。
- meta robots:写在 HTML 的 head 里,蜘蛛需要抓取并解析 HTML 之后才能读到,只对 HTML 页面有效。
- X-Robots-Tag:写在 HTTP 响应头里,蜘蛛在握手阶段就能拿到,对 PDF、图片、JS、视频等非 HTML 资源同样适用。
两者同时存在时,一般以响应头里的 X-Robots-Tag 为准,因为它在更早的阶段被读取,也更难被页面模板覆盖。做批量排查时,两处都要看。
二、入口页常见的几种误用
1. 模板默认带 noindex
不少建站程序、CMS 主题或测试环境配置会默认输出 noindex,用来防止测试页被收录。如果入口页模板直接沿用了这套代码,批量上线之后所有页面都会带着 noindex。蜘蛛照样会来抓,但通常不会保留结果,等于白抓一趟。
2. 反代、CDN 或对象存储注入响应头
有的 CDN、WAF 或者静态托管平台会在响应头里统一加 X-Robots-Tag,常见于默认禁用索引的配置。页面上看不到任何异常,只有查响应头才能发现。
3. 误加 nofollow
为了防止出站链接被利用,有人在整页加了 nofollow,结果连站内互链也被一起屏蔽。入口页之间的互链是蜘蛛发现新地址的重要路径,一刀切加 nofollow 会削弱这部分作用。
4. 把 robots.txt 和 meta robots 混为一谈
robots.txt 里的 Disallow 只是阻止蜘蛛抓取,已经收录的页面不会因此消失;而 noindex 需要蜘蛛能抓到页面才能读到。两者用途不同,用 robots.txt 去“清理”已收录内容往往达不到预期。
三、入口页的检查方法
- 用 curl -I 或浏览器开发者工具的网络面板查看响应头,确认有没有意料之外的 X-Robots-Tag。
- 查看页面源码的 head 部分,确认 meta robots 的取值是否符合预期。
- 从批量生成的模板里抽查若干条 URL,而不是只看首页或者自己打开的那一条。
- 检查服务器、CDN、反向代理、对象存储的默认配置,看是不是在统一注入指令。
- 修改之后重新抽样验证,确认指令已经去掉,而不是只在后台点了保存。
四、批量维护时的几点建议
- 把 robots 指令放在统一模板里控制,避免单页手写,减少遗漏和冲突。
- 真正需要 noindex 的只有测试页、内部页之类的少数场景,不要为了方便批量加上。
- 指令调整后不会立刻生效,蜘蛛需要重新抓取才能读到新状态,中间存在时间差。
- 把响应头和 HTML 两面都纳入上线检查清单,和状态码、canonical 一起看。
robots 指令表达的是“我希望你怎么处理这个页面”,它不是收录开关,也不保证一定按预期执行。真正决定页面价值的,还是内容本身和抓取路径是否顺畅。
对批量运营的入口页来说,比较省事的做法是:模板里默认不放任何限制性指令,需要时再单独加;上线后定期抽查响应头,把误伤尽量消灭在早期。