robots.txt 是部署在网站根目录下的一个纯文本协议文件,通过一组简单的指令,告诉搜索引擎的爬虫程序哪些路径可以访问、哪些路径应当避开。合理设置这份文件,能引导搜索引擎将有限的抓取配额集中到网站的优质内容上,加快新页面的收录速度;而一旦语法出错或路径写得不准确,轻则导致部分页面无法被抓取,重则可能影响整站的自然搜索流量。要发挥它的正向作用,就需要系统掌握它的语法规则和匹配逻辑,同时绕开那些容易让人栽跟头的坑。
这份文件的核心作用是约束爬虫的抓取行为。你在浏览器地址栏输入“你的域名/robots.txt”,就能看到当前生效的规则内容。但必须明确一点:即使规则里明确屏蔽了某个目录,搜索引擎依然有可能通过站外链接找到该目录下的页面,并把它们加入索引,区别在于这些页面的快照内容很可能是不完整或缺失的。如果你真的想彻底阻止某个页面出现在搜索结果里,正确的做法是使用 noindex 元标签,而不是只依赖这份抓取协议。
还需留意的是,robots.txt 的存在完全依赖爬虫的自觉。主流搜索引擎的蜘蛛基本都会遵守规则,但各种第三方采集工具、恶意扫描程序并不理会这些约定。凡是涉及用户隐私、后台管理面板、订单数据等敏感内容的目录,必须叠加登录鉴权、IP 白名单、防火墙等手段进行多层防护,绝不能把站点安全寄托在这样一份“君子协定”上。
整个文件由若干条规则组构成,每一组都以 User-agent 行作为开始,组与组之间使用空行分隔。每条记录的格式统一为“字段名: 值”,冒号必须是英文半角符号,建议在冒号后面跟一个空格,这样既清晰也便于解析。
这个字段声明的是当前这一组规则具体适用于哪个爬虫。比如你只想限制谷歌的搜索爬虫,就写“User-agent: Googlebot”;如果想对所有搜索引擎统一生效,则使用通配符“User-agent: *”。你还可以在同一个文件里为不同爬虫设置差异化策略,例如给 Googlebot 较宽的抓取权限,同时对 Bingbot 限制某些路径的访问。
Disallow 表示禁止抓取的路径,Allow 则表示明确放行的路径。这里有个很容易忽略的细节:如果 Disallow 这一行后面没有跟任何值,代表允许爬虫访问整站内容。多条规则同时命中一个 URL 时,搜索引擎普遍遵循“最长匹配优先”的原则——即路径字符串写得越具体,它的优先级就越高。举例来说,同时存在“Disallow: /admin/”和“Allow: /admin/public/”两条规则,因为后者的路径更长,所以 public 子目录下的资源会被正常抓取。
Sitemap 字段用来声明站点地图的完整 URL 地址,方便爬虫快速定位网页,一般建议放在文件的末尾。Crawl-Delay 则是用来指定爬虫两次抓取之间的间隔秒数,它只在部分搜索引擎中生效,谷歌官方明确表示不支持该指令,并推荐使用 Search Console 后台的抓取速率设置来代替。
最常见的一个错误是路径写法理解有偏差。Disallow 后面填写的是相对于站点根目录的路径,而不是完整的网页地址。比如你想屏蔽 /images/ 目录,正确写法是“Disallow: /images/”,写成“https://域名/images/”这种完整形式并不会生效。其次,通配符的使用要格外谨慎,$ 符号表示匹配路径结尾,* 号可以代表任意字符序列,例如“Disallow: /*.pdf$”能屏蔽所有以 .pdf 结尾的文件,但滥用 * 号很容易造成预期之外的屏蔽范围。
大小写问题同样不容忽视。robots.txt 对大小写是敏感的,/About/ 和 /about/ 会被视为两个完全不同的路径。所以在配置时,务必对照服务器上真实的目录和文件大小写逐一核对,否则就可能出现规则明明写了却没起到任何作用的情况。
写完规则后的核对工作非常重要。通用的做法是直接在浏览器中打开“你的域名/robots.txt”,确认文件内容完整、语法无误。各搜索引擎也提供了各自的测试入口,例如谷歌可以通过 Search Console 的“robots.txt 测试工具”来模拟 Googlebot 抓取指定的 URL,以验证规则是否符合预期。修改配置后,需要等待一段时间才能完全生效,不建议频繁改动,否则爬虫需要重新解析和适应,反而会影响新内容的抓取速度。
不能。它只能阻止爬虫去抓取内容,但搜索引擎依然可能通过外部链接发现并索引该页面,只是抓取不到页面内容,结果页里显示的可能是空白快照。如果想让页面彻底从搜索索引中消失,应该使用 noindex 元标签,两者配合使用效果才完整。
在规则组内写上“User-agent: *”并单独写一行“Disallow:”表示允许所有爬虫抓取全站内容,跟完全没有 robots.txt 文件的效果接近。而省略 Disallow 行则意味着这一组规则里没有定义任何禁止项,两者在语义上略有不同,但实际效果基本一致。
可能的原因包括:规则文件被缓存导致爬虫读取了旧版本;服务器上存在多个 robots.txt 文件且根目录下的优先级被干扰;或者屏蔽的路径大小写与真实目录不一致。建议先检查文件响应状态和内容,再利用搜索引擎的测试工具逐条验证。
配置 robots.txt 时,先明确它只控制抓取这一前提,把 sensitive 目录的防护交给更安全的认证机制;其次把 User-agent、Allow 与 Disallow 的匹配逻辑练熟,路径一律写成相对根目录的形式,注意大小写与通配符的边界;最后,每次修改后务必通过官方工具测试验证再正式上线。这份规则不难,但每一处细节都直接影响搜索引擎对你站点的信任与抓取效率。