robots.txt 文件是网站与搜索引擎爬虫之间的沟通协议,用来告知哪些页面可以抓取、哪些目录需要屏蔽。配置得当可以保护后台数据、节省服务器资源,但一个微小的语法错误也可能导致整个站点无法被收录。本文从文件放置、语法规则到排查思路,帮你系统掌握这份文件的使用方法。
robots.txt 必须使用小写字母命名,并放在域名根目录下,即通过 https://yourdomain.com/robots.txt 这样的地址直接访问。如果文件名大小写有误,或文件放在子目录中,爬虫会视为文件不存在,此时所有屏蔽规则都不会生效,默认允许抓取全部内容。
文件以行为单位书写,每一组规则以 User-agent 开头,后续跟若干条规则语句,组之间用空行分隔。字段名不区分大小写,但路径值通常区分大小写,书写时要注意保持一致。
User-agent、Disallow 与 Allow 构成规则的核心。User-agent 用来指定规则适用的爬虫对象,Disallow 声明禁止访问的路径,Allow 则可在被禁止的范围内开放特定位置。
如果希望拦截所有搜索引擎的抓取,可以这样写:
User-agent: *
Disallow: /
若只想屏蔽后台管理目录,写法为:
User-agent: *
Disallow: /admin/
此处有一个常见误区:路径末尾的斜杠直接影响匹配范围。/admin/ 只限制 admin 目录及其子页面;若写成 /admin,凡是路径以 admin 开头的地址都会被屏蔽,比如 /administrator 或 /admin-panel,容易误伤其他正常页面。
当某条路径同时被 Allow 和 Disallow 命中时,并非按照书写顺序决定结果。基本判定原则是:若两条规则路径长度相等,则 Allow 优先;若长度不等,路径更长、更具体的那条规则优先。
以实际场景为例,需要封禁整个博客目录,但单独放行一篇专题文章,配置如下:
User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/
这样设置后,专题页可以正常被抓取,其他博客内容仍然被屏蔽。动手配置前,建议先把需要限制的路径逐一列出,检查是否存在相互覆盖的情况,避免出现意外的放行或拦截。
在文件末尾添加 Sitemap 声明(例如 Sitemap: https://yourdomain.com/sitemap.xml),可以主动告知爬虫网站地图的位置,帮助新页面更快被收录。需要注意的是,Sitemap 声明与 User-agent 规则相互独立,放在文件任何位置均有效。
日常维护中常见的问题包括:修改文件后未及时验证是否生效;使用了通配符但格式不对,例如单独写 Disallow: /*.pdf 时并非所有爬虫都支持;以及将 robots.txt 与 HTTP 响应头中的 X-Robots-Tag 混用,导致规则叠加后出现难以排查的异常。
不会直接触发惩罚,但可能造成收录异常。比如把 Disallow 写成 / 会屏蔽全站,导致页面从搜索结果中消失;而错误的 Allow 规则可能让后台页面被索引。发现后及时修正文件,并使用站长工具提交重新抓取即可恢复。
不需要。如果所有爬虫的规则一致,只用 User-agent: * 声明一组即可。只有当特定爬虫(如 Googlebot、Bingbot)需要不同的访问权限时,才单独为其添加一组规则,且建议将更具体的 User-agent 放在通用规则之前。
推荐在页面 head 区域添加 noindex 标签,这样即使爬虫已经抓取该页面,也不会将其索引展示。robots.txt 只是阻止爬虫抓取,如果页面已被其他途径收录,规则修改后仍需等待重新抓取才能生效,两种方式配合使用效果更佳。
robots.txt 配置并不复杂,关键在于细节。建议每次改动后都访问文件地址确认格式无误,再用站长工具的抓取测试功能验证规则是否命中预期路径。遇到不确定的匹配情况时,优先采用更长、更具体的路径写法,同时避免混合使用多种限制方式,这样能减少大部分常见问题。