对每个网站运营者来说,根目录下那份名为 robots.txt 的文件都不该被忽视。它通过几条简单的指令,为搜索引擎的爬虫划定可抓取与禁入的区域。配置得当,抓取预算会流向核心页面,新内容的收录速度随之加快;反之,一旦语法有误或路径写错,可能导致整站权重下滑,甚至从搜索结果中消失。下面将这份文件的核心语法与常见误区逐一拆解。
robots.txt 的服务对象是爬虫程序,在浏览器中直接输入“域名/robots.txt”即可查看内容。它的作用类似于一个站内向导,告知爬虫哪些路径可以通行,但某个页面最终是否进入搜索引擎的索引库,并不由它决定。若想彻底让页面从搜索结果中消失,应借助 noindex 元标签实现。该协议仅影响爬虫是否来抓取,对已抓取内容是否被收录没有直接控制力。举个例子,某页面虽在 robots.txt 中被屏蔽,但如果外部链接指向它很多,搜索引擎仍可能将其收录,只不过快照内容可能源于其他渠道。
另外需要牢记,此协议依赖爬虫自觉遵守。主流搜索引擎的蜘蛛通常都会遵循,但大量恶意抓取脚本和第三方采集工具完全无视这些规则。涉及用户隐私、交易记录、后台管理等敏感目录,必须叠加登录验证、IP 白名单或防火墙等防护措施,切勿将站点安全完全寄托于这份“君子协定”。
robots.txt 由若干规则组构成,每一组必须以 User-agent 字段开头。所有字段均采用“名称: 值”的格式,冒号须使用英文半角,其后加一个空格是规范写法。尽管多数爬虫对格式有一定容错能力,但规范的写法能避免日后出现解析意外。
该行声明当前规则组约束哪一类爬虫。若只想限制 Google 的搜索蜘蛛,可写 User-agent: Googlebot;想让所有搜索引擎的爬虫统一执行规则,则使用通配符 User-agent: *。也可以创建多个规则组,对不同爬虫实施差异化策略,例如对谷歌放宽权限、对必应收紧限制。
Disallow 声明禁止访问的路径,Allow 声明允许访问的路径,二者通常配合使用。有一个细节容易被忽略:当 Disallow 后面留空(即 Disallow: 且无值),代表清除全部限制,爬虫可抓取全站任何内容。当同一 URL 同时命中多条规则时,搜索引擎默认遵循“最长匹配优先”原则——路径越具体,优先级越高。例如同时配置了 Disallow: /api/ 和 Allow: /api/public/,由于后者更具体,public 子目录下的内容将被放行。
Sitemap 指令用于声明站点地图的完整 URL,帮助爬虫快速定位全站内容,通常置于文件末尾。Crawl-delay 则设定爬虫抓取的间隔时间,单位为秒。需要特别指出,Google 爬虫并不认可该指令,官方建议在 Search Console 后台设置抓取频率,而非依赖此字段。
第一个常见误区出在路径理解上。Disallow 后的值对应的是根目录下的路径,而非完整 URL。比如 Disallow: /admin/ 屏蔽的是所有以该路径开头的目录,并非特指某个域名下的完整地址。其次,通配符的使用也需谨慎,星号(*)可匹配任意字符序列,美元符号($)则匹配路径结尾,过度使用可能导致限制范围超出预期。此外,大小写敏感是另一个陷阱,路径中的字母区分大小写,/Product/ 与 /product/ 会被视为不同路径,配置时务必与实际目录结构保持一致。
在正式上线前,建议先通过搜索引擎提供的抓取测试工具验证规则的生效情况,避免因拼写错误导致整站被屏蔽。同时定期检查日志,观察爬虫的实际抓取行为,若发现异常可及时调整规则。对于大型站点,建议将规则按功能模块拆分,便于维护和排查。另外,不要将临时性限制长期保留在文件中,避免对后续的抓取策略产生意外影响。
当 Disallow 后面没有跟任何内容时,表示该规则组不禁止任何路径,即爬虫可以访问全站所有内容。这一写法常用于对特定爬虫完全放行,或作为规则组的默认配置。
搜索引擎遵循“最长匹配优先”的原则。例如同时存在 Disallow: /api/ 和 Allow: /api/public/,由于后者路径更具体,其优先级更高,因此 public 子目录下的内容会被允许抓取。
无效。Google 的爬虫不识别 Crawl-delay 指令,官方推荐通过 Search Console 的“抓取频率”设置来调整。其他一些搜索引擎(如 Bing)则可能支持该指令,但具体效果需以官方文档为准。
配置 robots.txt 并不复杂,但细节决定成败。明确其只能约束抓取、不能决定收录的边界,理解各字段的含义与匹配逻辑,留意路径大小写和通配符的用法,就能避免大部分常见问题。建议结合搜索引擎提供的工具进行验证,并定期审视文件内容,确保规则与实际需求一致。若涉及敏感目录,务必叠加其他安全手段,切勿仅依赖此协议。