robots.txt是网站根目录下的一个纯文本文件,作用是指引搜索引擎爬虫哪些页面可以抓取、哪些应当忽略。配置合理,爬虫能更高效地抓取重点内容,新页面收录速度也会提升;配置不当,则可能造成整站抓取受限,甚至影响既有排名。理解其语法规则与常见误区,是网站运营的基本功。
robots.txt本质上是写给爬虫的访问意向说明,不具备任何强制性。任何访客都可以在浏览器中直接访问"域名/robots.txt"查看文件全文。它就像办公楼入口处的指引牌,标记了哪些区域允许参观,但存放核心资产的机房绝不能只靠这张指引牌来防护。
这份文件只能影响爬虫是否发起抓取请求,并不能直接决定页面是否进入搜索引擎索引。举例来说,一个被Disallow屏蔽的页面,若站外有大量链接指向它,搜索引擎仍有可能将它收录,只是搜索结果中展示的快照可能来自缓存内容或页面描述。
需要特别明确:该协议完全依赖爬虫的自觉性。主流搜索引擎的蜘蛛通常都会遵守,但大量第三方采集程序、恶意爬虫并不会理会这些规则。凡是涉及用户隐私数据、管理后台、支付流程等敏感路径,务必同时启用登录验证、IP白名单或防火墙等硬性拦截手段,切不可将安全寄托在robots.txt上。
robots.txt文件由若干指令组构成,每组以User-agent行开始,用于声明该组规则的适用对象。所有指令格式均为"名称: 值",冒号必须使用英文半角字符,并在冒号后保留一个空格。虽然多数爬虫对格式有一定容忍度,但规范的写法能避免日后解析异常。
这一行指定当前指令组约束哪类爬虫。若只针对谷歌蜘蛛,写User-agent: Googlebot;若希望对所有搜索引擎统一生效,则使用通配符User-agent: *。通过拆分多个指令组,可实现差异化策略,例如对谷歌放开权限,同时限制必应的抓取频率。
Disallow声明禁止访问的路径,Allow声明允许访问的路径,二者经常配合使用。有一个容易忽略的关键:当Disallow后留空时,表示清除全部限制,爬虫可抓取全站内容。当一条URL同时匹配多条规则时,搜索引擎普遍遵循"最长匹配优先"原则——路径越长越具体,优先级越高。例如同时存在Disallow: /api/ 与Allow: /api/public/,后者匹配的路径更长,因此public子目录下的请求会被放行。
Sitemap指令用于声明站点地图的完整URL,帮助爬虫快速掌握网站结构,通常放在文件末尾。Crawl-delay指令用于设定爬虫两次抓取请求之间的间隔秒数。需特别注意:谷歌的蜘蛛完全不支持Crawl-delay,其抓取频率由自身算法动态决定,设置该指令对谷歌无效,若依赖它控制抓取压力会落空。
语法本身并不复杂,但不少站点在细节处栽了跟头。以下三类错误最为常见:
建议每次修改robots.txt后,使用搜索引擎官方的检测工具(如谷歌的robots.txt测试器)进行验证,观察规则是否符合预期,避免因一个字符错误导致整站内容无法被抓取。
以下是一个常见的企业官网robots.txt配置示例,可作为参考模板:
User-agent: * Disallow: /admin/ Disallow: /tmp/ Allow: /public/ Sitemap: https://www.example.com/sitemap.xml这个配置对所有爬虫生效:屏蔽了后台目录与临时目录,单独放行了public目录中的文件,同时声明了站点地图位置。值得注意的是,规则组之间不要留有多余的注释行或空行,以免破坏解析逻辑。
另外,建议定期(如每月一次)检查robots.txt文件是否存在意外变更,尤其是当开发人员修改站点结构时,可能需要同步更新规则。最简单的检查方法是直接访问域名/robots.txt,确认文件内容与预期一致。
不能完全阻止。robots.txt只阻止爬虫发起抓取请求,但如果页面被外部链接广泛引用,搜索引擎仍可能将其加入索引(只是无法抓取内容)。若要彻底阻止收录,应当配合使用noindex标签或服务器端的访问认证。
生效时间不定。爬虫通常会定期重新抓取robots.txt文件,短则几小时,长则数天。若急需更新规则,可以通过搜索引擎的站长平台提交"抓取更新"请求,加速文件重新获取。
无效。谷歌官方明确表示不支持Crawl-delay,其抓取频率由算法根据站点质量、响应速度等因素自动调控。若要控制谷歌对服务器的压力,建议通过谷歌搜索控制台设置抓取速率。
robots.txt配置虽看似简单,却直接影响搜索引擎对站点的抓取效率与收录质量。建议遵循三个核心原则:一是始终将文件视为协作建议,敏感页面务必配合硬性安全措施;二是写规则时明确区分大小写、善用最长匹配逻辑,避免模糊配置;三是每次修改后立即用官方工具验证效果。定期审视并优化你的robots.txt,是保障站点收录健康的低成本、高回报操作。