域名根目录下的 robots.txt 看似不起眼,却牵动着网站的抓取效率与收录安全。它通过简单的文本指令,为搜索引擎爬虫划定允许与禁止的抓取边界。规则正确,抓取预算会重点流向高质量内容;规则出错,甚至可能导致整站从索引中消失。这份配置需要从基础语法到细节陷阱逐项梳理,才能用得稳妥。
访问 https://你的域名/robots.txt 即可看到当前配置。它的职责是告诉爬虫“哪里可以走,哪里不要进”,相当于一份入门指引。它并不直接决定页面是否被收录:若想彻底阻止页面出现在搜索结果中,应使用 noindex 标签。robots.txt 只约束爬虫的“抓取”行为,而“索引”与否更多取决于页面内容质量及外部引用情况。
需要特别留意的是,这份文件只对遵规守矩的爬虫具有约束力。主流搜索引擎的爬虫一般会遵守约定,但针对恶意采集、数据抓取脚本,这份文件几乎没有实际意义。涉及后台管理、用户订单、个人隐私等敏感路径,务必叠加登录验证、访问白名单、防火墙规则等硬性安全措施,不能将安全防线寄托于这份“君子协议”。
整个配置由一条或多条规则组构成,每个组都必须以 User-agent 开头,字段统一采用“名称: 值”的格式,建议使用英文半角冒号并在其后保留一个空格,保持书写规范以应对解析器的各类容错限制。
这一行指定当前规则组对哪个爬虫生效。使用 User-agent: Googlebot 仅限制谷歌搜索蜘蛛;使用通配符 User-agent: * 则可对全体爬虫适用。同样可以按需设置多个规则组,对不同搜索引擎给予不同的抓取权限,例如对谷歌放开更深层次的页面访问,而对其他引擎进行更严格的限制。
Disallow 声明禁止抓取的路径前缀,Allow 声明允许抓取的路径。需要留意的是,如果写成 Disallow: (后面空白),表示解除限制,爬虫可抓取全站内容。当同一个 URL 同时命中 Allow 与 Disallow 时,遵循“最长匹配优先”原则,即前缀更具体、字符更长的规则生效。例如禁止 Disallow: /api/,同时允许 Allow: /api/public/,那么 /api/public/ 目录下的文件依然可以被正常抓取。
Sitemap 指令用于提供一个网站地图的完整 URL,方便爬虫聚合发现内容,一般放置在文件末尾。Crawl-delay 则用于声明抓取间隔时间,但需要注意谷歌爬虫目前基本不再支持该项设置。因此对于抓取频率的控制,更建议通过 Google Search Console 的抓取速率设置来调整,而不是完全依赖此参数。
在实际运维中,很多事故源于细节。比如路径写成了大小写混用,部分搜索引擎对大小写敏感,导致规则无法生效。在此建议路径一律使用小写,并模拟推演路径匹配情况。
另一个常见错误是把 Disallow 写成了 Disallow: / 后忘记补充 Allow 声明,导致整站不可抓取。可以使用站长工具或直接搜索“site:你的域名”来检查核心页面是否仍被正常收录,从而判断配置是否误伤。修改后务必做一次抓取测试,或通过爬虫模拟工具核实页面返回的状态码与内容情况。
此外,绝对不要用 robots.txt 隐藏后台地址或内测页面。它只是一个公开文档,任何人都能看到其中的路径,这样反而暴露了敏感目录。对这类页面应采用更严格的访问控制。
经验法则:robots.txt 是用来“节流”而非“封禁”的工具,把抓取资源留给真正需要的内容,安全防护交给后端系统。
当站点结构发生变动或新上线功能模块时,及时调整配置很有必要。调整时建议按以下顺序执行:
整个流程并不复杂,但每次调整都需要留存记录,便于回滚与追溯。
搜索引擎重新抓取该文件并应用新规则通常需要数小时到数天不等。具体取决于爬虫的抓取频率以及站点权重。建议调整后通过站长平台主动提交或请求抓取,能显著缩短生效等待时间。
不能。它只阻挡搜索引擎的抓取,无法限制用户通过浏览器访问或手动复制内容。若希望减少内容被采集,更有效的是从访问频率限制、验证码验证、内容加密等角度入手。
并非强制,但建议配置。即使不配置,爬虫通常也会按默认规则进行全站抓取。但主动配置一份合理的文件能帮助你控制抓取预算,避免无价值页面浪费资源,同时明确告知爬虫优先处理哪些内容。
配置 robots.txt 并不复杂,难点在于边界意识与细节处理。前期定义好规则范围,中期验证路径匹配是否符合预期,后期定期检查收录变化,是保证配置长期有效的关键步骤。建议每次调整版本都留存备份,并在上线前用工具验证,不要把整站访问量押在一次未经测试的改动上。