在蜘蛛池的抓取链路里,robots.txt、meta robots 和 X-Robots-Tag 是抓取端最先遇到的几道指令。它们不直接影响排名,却会决定蜘蛛是否继续访问、是否把页面放进索引候选。很多入口页看起来正常,但蜘蛛到了之后立刻离开,问题就出在这些指令上。
robots.txt 是站点级协议,不是安全工具
robots.txt 放在域名根目录,用来告诉抓取端哪些路径可以抓、哪些不建议抓。它有两个容易被忽略的特点:一是只对遵守协议的蜘蛛有效,二是它本身不是访问控制。把后台、敏感目录写进 Disallow,并不能阻止直接访问,反而可能让这些 URL 通过外部链接被蜘蛛发现。
蜘蛛池入口页最常见的误用是整站禁止:
- Disallow: /:入口页和所有子路径都不再被抓取,蜘蛛即使来了也不会继续。
- 规则写错:比如多写空格、路径大小写不一致、通配符使用不当,导致想放行的目录被误伤。
- 屏蔽静态资源:把 CSS、JS 或图片目录一并禁止,抓取端可能无法完整理解页面内容。
- robots.txt 返回 5xx 或超时:抓取端可能暂时降低抓取频率,严重时减少对站点的访问。
建议在修改 robots.txt 后,用日志确认蜘蛛对入口页和目标页的访问是否正常,而不是只看配置文件。
meta robots 与 X-Robots-Tag 的差别
meta robots 写在 HTML 的 head 里,X-Robots-Tag 放在 HTTP 响应头中。两者都能控制索引和链接跟踪,但作用范围不同:前者只影响当前 HTML 页面,后者可以作用于非 HTML 资源,也更容易在服务器或 CDN 层统一添加。
常见误区是把 noindex 当成节省抓取预算的手段。实际上,noindex 的意思是“可以抓,但不要索引”。蜘蛛仍然会请求页面,消耗抓取资源。如果确实不想被抓,应该用 robots.txt 禁止抓取,或者让页面返回 401、403 等状态。
- noindex:不索引,但允许抓取。
- nofollow:不跟踪页面上的链接,可能影响入口页向目标页的链接发现。
- none:相当于 noindex, nofollow,误用会让页面既不被索引,也不传递链接线索。
如果入口页用了 nofollow,蜘蛛可能不会沿着链接走到目标页;如果目标页用了 noindex,即使被蜘蛛访问,也不会进入索引候选。
入口页与目标页的指令衔接
蜘蛛池通常有入口页和若干目标页。入口页负责被发现,目标页负责承接访问或索引。检查时不要只看入口页,还要看跳转链路上的每一跳。
- 入口页是否允许抓取,robots.txt 是否有误伤。
- 入口页的 meta robots 是否误写为 noindex 或 nofollow。
- 重定向链中的中间页面是否返回 3xx、4xx 或 5xx。
- 目标页是否被 X-Robots-Tag 或 meta robots 阻止索引。
- 日志中蜘蛛是否真的到达目标页,状态码是否为 200。
如果入口页允许抓取,但目标页返回 403 或 noindex,蜘蛛的这次访问就很难产生后续价值。排查时可以把日志按 URL 分组,看蜘蛛访问了哪些页面、停留多久、状态码分布如何。
排查顺序与使用建议
遇到蜘蛛不抓或抓得少时,可以按下面的顺序检查:
- 先访问 /robots.txt,确认返回 200、语法正确、没有整站禁止。
- 查看入口页 HTML 的 head,确认没有误写的 noindex、nofollow。
- 用浏览器开发者工具或命令行查看响应头,确认没有意外的 X-Robots-Tag。
- 检查 CDN、反向代理或安全插件是否自动添加了禁止抓取的响应头。
- 对照访问日志,看蜘蛛的请求频率和状态码是否与配置一致。
使用建议上,robots.txt 尽量保持简单,只屏蔽确实不需要抓取的路径;需要被抓取的入口页和目标页保持允许。对不想索引但希望被抓的页面,用 noindex 比用 robots.txt 更合适。对既不想被抓也不想被索引的页面,才考虑 robots.txt 加访问控制。任何修改后,都留出观察窗口,通过日志验证蜘蛛行为是否符合预期。
指令配置的目标不是“让蜘蛛一定来”,而是减少误伤:不该挡的别挡,该抓的能抓到,抓不到时能从日志里找到原因。