robots.txt 是一个存放在网站根目录的纯文本文件,其核心作用是向搜索引擎爬虫说明网站哪些路径允许抓取、哪些路径应当避开。合理配置这份文件,有助于引导爬虫将有限的抓取额度用于高价值页面,进而提升新内容的索引效率。然而,这个文件看似简单,一旦语法或路径写错,轻则导致页面抓取异常,重则可能影响整站的搜索表现。
首先需要厘清的是,robots.txt 并非安全机制,而是一种基于“君子协定”的抓取规范。该文件位于公开目录下,任何人均可通过输入域名加 /robots.txt 查看全部内容。因此,对于涉及用户隐私、后台操作等敏感信息,必须依赖登录验证、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 指令则用于设定爬虫两次请求之间的间隔秒数,适用于服务器负载较高或需要控制抓取频率的场景。但需注意,并非所有搜索引擎均支持该指令,例如谷歌已明确表示不采用此参数,建议通过 Search Console 的抓取速率设置来替代。
robots.txt 语法支持两种通配符:星号(*)代表任意长度的字符序列,美元符号($)则代表 URL 结尾。例如,Disallow: /*.pdf$ 可阻止所有以 .pdf 结尾的文件被抓取,而 Disallow: /admin* 会匹配所有以 /admin 开头的路径。需要注意的是,通配符的使用在不同搜索引擎之间存在微小差异,谷歌和必应均支持上述写法,但部分小众爬虫可能不支持,因此涉及关键路径时,建议辅以更明确的目录层级描述。
以下是实际配置中最常见的几个错误及其修正方案,供你在维护文件时逐一核对。
如果误将整个网站禁止抓取(例如写为 Disallow: /),所有页面会从索引中逐步移除,从而引发流量骤降。但这类问题一般可通过修正文件并提交重新抓取来恢复,通常不会造成永久性的惩罚。
最直接的方法是在浏览器中访问 你的域名/robots.txt,检查内容是否符合预期;同时可在 Google Search Console 的“robots.txt 测试工具”或必应站长工具中模拟抓取指定 URL,查看是否被拦截。
搜索引擎遵循最长匹配优先原则,即最具体、最长的路径规则生效。若两条规则长度相同,则优先采用 Allow 指令。因此,通过设置更长的具体路径可以实现对子目录的精细放行。
配置 robots.txt 时,应始终围绕“引导爬虫高效抓取”这一目标展开。建议先梳理站点目录结构,明确哪些路径必须开放、哪些需要限制,再按规则组逐一编写。配置完成后,务必在浏览器中验证文件可访问,并利用搜索引擎站长工具测试关键页面的抓取状态。同时,将该文件与 noindex 标签、站点地图及其他权限控制手段结合使用,才能构建一套完整且稳健的搜索引擎引导体系。