robots.txt 是网站与搜索引擎爬虫之间的沟通协议,用来明确告知哪些内容可以抓取、哪些目录应当回避。一份配置得当的文件能有效保护后台数据、节省服务器资源,而配置失误则可能导致屏蔽失效,甚至让整站内容无法被收录。掌握正确的书写方式和匹配逻辑,是每位站点管理者都该具备的基础技能。
搜索引擎只会在固定位置查找这份文件。文件必须采用全小写字母命名,且直接安放在域名的根目录下,比如 https://yourdomain.com/robots.txt。只要命名大小写有误,或文件被放置在子目录里,爬虫就会视为文件不存在,进而默认放开所有抓取权限,之前设定的规则全部失效。
文件内部以“块”为组织单位,每块用 User-agent 开头声明适用的爬虫对象,随后写入相应规则。块与块之间用空行分隔,方便后续阅读和修改。字段本身的名称不区分大小写,但路径参数通常按大小写敏感处理,书写时需保持统一风格。
注释以 # 开头,可单独占一行,也可附加在规则行之后。注释仅用于说明意图,不会影响实际的抓取判定,建议在关键规则旁标注作用对象,便于团队成员协作维护。
User-agent、Disallow 和 Allow 共同构成了规则的主体。User-agent 界定规则适用的爬虫类型,Disallow 指明禁止抓取的路径范围,而 Allow 则用于在禁抓范围内定向开放个别路径。
例如需要屏蔽全站内容时的写法:
User-agent: *
Disallow: /
若只需拦截爬虫进入管理后台,可这样写:
User-agent: *
Disallow: /admin/
这里存在一个经常被忽视的细节:Disallow 末尾的斜杠直接决定匹配边界。/admin/ 仅限制 admin 目录及其子页面;若省略末尾斜杠写成 /admin,则所有以 admin 开头的路径都会被拦截,比如 /administrator、/admin-center 这类页面也可能被误伤,需格外留意。
当同一条路径同时命中 Allow 和 Disallow 规则时,结果并不取决于书写顺序,而是遵循一套固定的判定逻辑:若两条规则的路径长度一致,Allow 规则优先;若长度不一致,则更长、更具体的路径规则占据优先地位。
举例说明,假设要屏蔽整个博客目录,但单独放行其中某一篇专题文章,配置应当如下:
User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/
如此配置可确保专题文章被正常抓取,而其余博客内容依然保持屏蔽状态。在正式上线前,建议先列出所有需要控制的路径,逐一检查是否存在重叠匹配的情况,以免产生意料之外的放行或拦截。
在文件末尾追加一行 Sitemap 声明(Sitemap: https://yourdomain.com/sitemap.xml),可以主动向爬虫提供站点地图的准确位置,有助于提升新页面和新内容的发现效率。搜索引擎会直接读取这一路径来获取页面列表,再结合规则决定是否逐一抓取。
实际运维中,不少网站管理员容易陷入以下几种误区。
建议搭建好规则后,利用搜索引擎官方提供的抓取检测工具进行验证,确认实际抓取行为与设计预期相符。
并非必需。Allow 规则主要用于在 Disallow 限定的范围内定向开放某些路径。如果不需要放行被屏蔽的目录,可以省略 Allow,仅使用 Disallow 即可实现绝大多数屏蔽需求。
搜索引擎通常会在一定周期内重新抓取该文件。修正后,爬虫会在下一次例行抓取时重新读取并应用新规则,具体时间取决于各搜索引擎的抓取频率,一般在数天到数周内可见效果。
可以阻止抓取,但它只是一种防君子不防小人的手段。robots.txt 是协约性质的声明,并不具备强制的访问控制能力。若涉及真正的敏感数据,应当通过登录验证、IP 白名单等服务器端措施进行实质性保护。
合理配置 robots.txt 的核心在于理解语法细节与匹配逻辑:文件必须放在根目录,路径值的斜杠和大小写都需谨慎核对,Allow 与 Disallow 的优先级规则要心中有数。建议在每次修改后使用测试工具或浏览器直接访问验证,确认规则生效后再推广到线上环境。如涉及敏感数据,请务必配合权限访问控制,切勿单纯依赖 robots.txt 来保障安全。