Robots.txt 是网站与搜索引擎爬虫之间的第一道沟通桥梁,它决定了哪些页面资源可以被抓取收录,哪些应当被拒之门外。一份配置得当的文件,既能保护后台与隐私数据,也能减轻服务器压力,让爬虫将精力集中在真正有价值的内容上。接下来,我们以实际配置为目标,系统梳理其语法规则与常见场景的写法。
Robots.txt 的存放位置有严格要求,必须位于网站域名的根目录下,例如 https://yourdomain.com/robots.txt。其内容遵循简单的键值对格式,每个指令占一行,主要通过几个核心字段来控制爬虫行为。
一个最宽松的配置示例,表示放行一切抓取,并声明地图位置:
User-agent: * Disallow: Sitemap: https://yourdomain.com/sitemap.xml值得注意的是,Disallow 与 Allow 匹配的是 URL 的路径前缀,而非精准的绝对地址。例如 Disallow: /api 会同时屏蔽 /api 与 /apidata 等以该字符串开头的链接,因此编写时需留意路径细节。
在真实项目中,我们往往需要根据站点架构去定制规则。以下列举几种最常遇到的场景及推荐写法。
当网站处于开发测试期,或需要临时关闭搜索引擎收录时,可以使用以下规则彻底阻绝爬虫:
User-agent: * Disallow: /这样设置后,爬虫将无法抓取根路径下的任何资源。但需注意,此操作仅影响新抓取,已收录页面的展示可能需要一段时间才会被移除。
大多时候,我们只希望隐藏某些特定区域,比如管理后台或用户中心。此时只需列明需禁止的目录,其余路径保持默认放行状态:
User-agent: * Disallow: /admin/ Disallow: /user-center/ Disallow: /checkout/若你担心某些爬虫对 Allow 指令支持不佳,最稳妥的方式便是如上方所示,仅使用 Disallow 列出黑名单,这比混合使用 Allow 更容易掌控结果。
大型站点通常需要区分对待不同搜索引擎。例如允许 Googlebot 抓取全部内容,同时限制百度爬虫访问低质量的分页列表,而面向其他爬虫则屏蔽资源目录:
User-agent: Googlebot Allow: / User-agent: Baiduspider Disallow: /tag/ Disallow: /page/2/ User-agent: * Disallow: /assets/ Disallow: /static/img/这里有一个重要原则:具体的爬虫规则必须写在通配规则之前。爬虫在读取文件时会自上而下匹配,优先命中以自己名称命名的区块,随后才轮到星号规则。
编写过程中,一些微小的疏漏可能造成页面意外泄漏,或导致规则整体失效。以下是几个容易被忽视的关键点。
规则写好后,务必将文件上传至根目录,并通过搜索引擎官方的抓取诊断工具进行测试。这些工具可以模拟爬虫视角,帮助检查某条具体的 URL 是否会被拦截。
在维护层面,建议遵循以下步骤进行日常管理:
它主要负责控制爬虫的抓取行为。如果页面因为 Disallow 规则未被抓取,那么自然不会出现在索引中。但如果页面已经被收录过,之后才添加屏蔽规则,那么已经收录的缓存结果仍然可能短暂显示在搜索结果里,需要等待搜索引擎自然清理或通过工具提交删除请求。
爬虫会严格按照文件内部的顺序进行匹配。对于某个具体的爬虫,它只会执行第一个包含其名称的 User-agent 区块内的指令,不会再合并后续的同名区块。因此,务必先将针对特定爬虫的详细规则写在前面,最后再声明通配的星号规则,否则特定规则会被忽略。
Allow 指令的优先级在实际应用中是存在争议的。虽然主流搜索引擎(如 Google)支持 Allow 与 Disallow 组合使用,并以最长匹配路径为准,但部分小众爬虫仅支持标准的 Disallow。若你发现规则不生效,最稳妥的办法是重新梳理目录结构,仅使用 Disallow 声明黑名单路径,而把需要放行的内容留在默认白名单中。
Robots.txt 并不复杂,关键在于理解其匹配原理与执行顺序。建议你在实际部署时,先梳理出网站中必须隐藏的目录清单,再设定不同爬虫的权限分层,最后上传文件进行逐一验证。平日里养成定期复查的习惯,确保规则没有误伤重要页面,也未遗漏新上线的敏感路径。从一份清晰简洁的配置开始,为网站的搜索引擎优化工作奠定坚实基础。