robots.txt 是放在网站根目录下的纯文本文件,用来向搜索引擎爬虫说明哪些页面可以抓取、哪些页面应该回避。配置得当,它可以帮你引导爬虫聚焦核心内容、节省服务器资源;配置失误,则可能导致整站收录异常或敏感目录暴露。以下内容将系统梳理它的语法、匹配逻辑以及常见操作误区。
这份文件本质上是一份公开的抓取许可声明,它告诉搜索引擎哪些路径可以访问、哪些路径应当回避。当前主流引擎都会遵循其中的协议,但它并不提供任何强制性的访问控制,更像是一种行业共识。
它的核心价值体现在:隔离后台与测试环境等非公开目录;规避带有大量动态参数的重复页面;通过声明 Sitemap 地址加速内容发现。需要注意的是,由于文件对所有人可见,单纯依赖它来保护隐私数据并不可靠,涉及真实敏感信息必须叠加登录验证或 IP 限制等手段。
在规划屏蔽方案时,要有“安全边界”意识。robots.txt 能阻挡的是“遵守规则的爬虫”,而非恶意程序或普通访客的访问请求。
robots.txt 的语法规则并不复杂,采用“字段: 值”的结构,每一行只包含一条指令。字段名不区分大小写,但路径部分是区分大小写的,这一点在实际配置时需要留意。
例如,站内有一个仅供内部使用的分享区 /internal/,但你希望其中一篇对外介绍文档被搜索引擎收录。此时可以这样设置:
User-agent: *
Disallow: /internal/
Allow: /internal/intro.html
Sitemap: https://example.com/sitemap.xml
这段规则表达的含义很清晰:默认屏蔽 internal 目录内所有内容,但单独放行 intro.html 页面,同时告知爬虫站点的地图文件位置。这种“整体禁止、局部开放”的做法,在日常运维中非常实用。
编写出可用的 robots.txt 很容易,但要保证规则不会“误伤”,就需要掌握一定的编写顺序和匹配逻辑。
在同一组内,匹配遵循“最长匹配优先”原则,即路径字符匹配越长的规则越优。比如 Disallow 设为 /internal/、Allow 设为 /internal/intro.html 时,由于 intro.html 的路径更长,它会在匹配时胜出,实现放行。这一点在调试时非常容易踩坑,建议在修改前先把所有可能匹配的规则路径列清楚。
实际运维中,很多收录异常都源自 robots.txt 的配置疏漏。以下几个场景是最容易出问题的。
若将 CSS、JS 或图片目录加入 Disallow,爬虫无法加载这些资源,页面可能被判定为低质量或布局错乱。应当只屏蔽需要隐藏的路径,不要顺手封掉静态资源。
部分站长习惯把 Allow 写在前面,最终发现局部开放未生效。这往往是因为同组内多个规则并存时,长度相近却互相冲突,而调试时没有逐条比对匹配长度。
robots.txt 协议只支持有限通配(如 * 和 $),并不兼容完整正则表达式。过度使用通配符可能导致规则无法被部分搜索引擎理解,干脆整条被忽略。
修复文件后,爬虫通常在下次抓取时会重新获取并应用新规则。不过,由于各引擎抓取周期不同(有的是几小时,有的需要几天),建议修正后主动通过 Search Console 等工具提交请求,可缩短等待时间。
不算坏事。没有该文件时,搜索引擎会按默认方式抓取全站,不会减少收录总量。但如果你有 Sitemap 或需要屏蔽非公开目录,还是建议维护一份,以便更精细地控制抓取行为。
爬虫会优先匹配名称完全对应的条目;若没有对应条目,则回退到 * 规则。因此,如果想给 Googlebot 单独开绿灯,请把它的条目放前面,并用 * 兜底覆盖其余爬虫。
robots.txt 是网站抓取管理的第一步,语法虽简单,但边界和优先级不容忽视。建议你从梳理目录清单开始,用“整体禁止、局部开放”的思路分条配置,并在上线前借助官方工具逐条验证。同时记得配置 Sitemap 声明,并定期检查抓取日志,确保屏蔽规则没有误伤核心内容。