robots.txt是放在网站根目录的一个纯文本指令文件,目的是告诉搜索引擎爬虫哪些路径可以抓取、哪些路径应当跳过。配置得当,可以让爬虫把有限的抓取额度用在关键页面上,促进新内容更快被收录;但一旦语法错误或路径判断失误,就可能造成页面抓取异常,甚至拖累已有的搜索排名。对站点运营者来说,真正理解它的运作逻辑和那些容易出错的细节,比背下几条命令更重要。
首先要认清,robots.txt对爬虫而言只是“建议”而非“强制”。任何人只需在浏览器地址栏输入你的域名加/robots.txt,就能直接看到文件全貌。它相当于一张园区导览图,标明哪些区域可进,但涉及核心数据、后台管理或支付流程的敏感地带,绝不能只依赖这张图来防守。
这份文件只能影响爬虫是否发起抓取请求,它无法决定一个已抓取页面是否进入索引。举个常见例子:某个页面虽然在robots.txt中被屏蔽,但只要它获得大量外部链接,搜索引擎仍有可能将其纳入索引,只是展示的摘要可能来自缓存或标题描述。此外,这一协议全凭爬虫自觉——谷歌、必应等主流搜索引擎的蜘蛛会遵守,但大量第三方采集工具和垃圾爬虫根本不理会。凡涉及隐私、支付、后台的区域,务必叠加登录认证、IP白名单或防火墙等硬性拦截手段。
robots.txt的内容由多个规则组构成,每个规则组必须以User-agent字段开头,声明该组规则的适用范围。所有指令格式统一为“名称: 值”,冒号使用英文半角符号,建议冒号后保留一个空格。多数爬虫对格式有较高容错度,但保持规范书写,能避免后续出现解析歧义。
这一行决定当前规则组约束哪类爬虫。若只想限制谷歌搜索蜘蛛,写User-agent: Googlebot;若希望所有搜索引擎统一对待,则用通配符User-agent: *。通过拆分多个规则组,可实现差异化配置——例如对谷歌放开权限,同时给必应设置更严格的抓取限制。
Disallow声明禁止访问的路径,Allow则声明允许访问的路径,二者常搭配使用。这里有个容易忽略的细节:当Disallow后面不填任何内容(即Disallow:)时,表示清除全部限制,爬虫可自由抓取整个站点。当一条URL同时命中多条规则时,搜索引擎普遍遵循“最长匹配优先”原则——路径描述越详细,优先级越高。例如同时存在Disallow: /api/和Allow: /api/public/两条规则,因为后者匹配路径更长更具体,所以public子目录会被顺利放行。利用这一特性,可以实现“屏蔽整个目录、只开放其中某个子目录”的精细控制。
Sitemap指令用于声明站点地图的完整URL地址,帮助爬虫快速了解全站内容结构,通常置于文件末尾。Crawl-delay指令则设定爬虫两次抓取之间的间隔时间,单位为秒。但需特别留意:谷歌蜘蛛不支持Crawl-delay指令,此参数仅对部分搜索引擎(如必应、Yandex)生效。如果确实需要限制谷歌的抓取频率,应通过Google Search Console的抓取速率设置来调整,而不是依赖该指令。
配置出错往往不在语法层面,而在对路径匹配规则的理解上。最常见的错误是误以为“/禁止/”这样的写法能屏蔽所有包含“禁止”的路径——实际上规则匹配的是URL路径的起始部分,而非模糊包含。想屏蔽任意位置出现的某段路径,必须使用通配符*。
另一个高频问题是对通配符的滥用。虽然主流搜索引擎支持*和$($表示匹配URL结尾,如Disallow: /*.pdf$可禁止抓取所有PDF文件),但并非所有爬虫都完整支持这些符号。若不确定目标爬虫的兼容性,建议先用简洁的路径前缀来替代,避免因规则无法解析而失效。需要判断规则是否生效时,可借助各搜索引擎站长平台提供的“robots测试工具”,输入具体的URL逐一验证,而不必等线上抓取结果反馈。
此外还需注意:规则中的路径是大小写敏感的,/Admin/与/admin/是两个完全不同的路径;连续超过多条的重复规则组、无效的User-agent名称(如拼写错误的蜘蛛名)也会造成规则无法命中。养成定期用在线检测服务检查文件可访问性和解析状态的习惯,能避免“静默失效”带来的收录隐患。
一个规范的文件通常遵循这样的结构顺序:先声明默认规则组(User-agent: *),再为特定搜索引擎分别设置规则(如果确实需要差异化),随后是Sitemap声明。建议在文件开头或分组之间加上注释行,用#号开头说明每条规则的用途,便于后续维护。
书写时注意保持行末无多余空格,避免使用中文标点或全角冒号,每条指令独占一行。多组规则之间最好用空行分隔,提升可读性。文件末尾需换行,否则部分解析器可能忽略最后一行指令。若站点有多个子域名,每个子域名根目录下需要单独部署各自的robots.txt,因为爬虫访问每个主机的根目录时都会去请求对应的文件。若某些页面资源被其他站点直接引用(如外部调用的图片),屏蔽这些路径时不影响其他站的引用加载,但应确认屏蔽是否影响自己站点的正常展示。
通常不会直接带来惩罚,但负面影响不容小觑——例如屏蔽了CSS文件可能导致页面渲染异常,被搜索引擎视为低质量页面;屏蔽了整站路径会造成新内容长时间不被收录。一旦发现配置失误,应立即修正文件并更新到线上,然后通过搜索引擎站长平台提交新的抓取请求,让蜘蛛尽快重新读取。
生效时间不定,取决于爬虫多久再次访问该文件。谷歌通常在24至48小时内重新抓取,其他搜索引擎各有差异。各站长平台大多支持手动请求重新抓取robots.txt,可缩短等待时间。
robots.txt只管“抓取”,不管“索引”。如果页面在设置屏蔽前已被抓取并收录,搜索引擎仍会保留其在索引中的记录,只是不会继续抓取更新。若希望彻底摘除已有页面,应使用meta robots标签或X-Robots-Tag的noindex指令,而不是仅靠robots.txt。
robots.txt的核心价值在于引导爬虫合理分配抓取资源,而非提供安全防护。正确配置需要把握三条主线:理解其“建议性质”、熟练掌握路径匹配与最长优先逻辑、时刻留意通配符兼容性和大小写敏感问题。建议新站上线时先创建最简版本(仅声明User-agent: *和Sitemap),再根据实际抓取日志逐步补充规则,每修改一次就使用在线检测工具验证。记住:一份规范、可预测的robots.txt,胜过事后无数次故障排查。