运营网站的开发者,几乎每天都会和 robots.txt 这个文件打交道。它静静存放在站点根目录,用几行简单指令告诉搜索引擎的爬虫:哪些路径可以放心抓取,哪些区域需要绕道而行。配置得当,爬虫的抓取效率会显著提升,新页面的收录速度也有明显改善;反之,语法写错或路径填错,轻则部分页面不被收录,重则整站权重受损,甚至从搜索结果中消失。下面就把 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 后台设置抓取频率,而不是依赖 robots.txt 中的这个字段。如果你同时面向多个搜索引擎,这个指令对 Bing 和 Yandex 等依然有效,但不要指望它对 Google 生效。
第一个常见误区出在路径理解上。Disallow 后面填写的值对应的是根目录下的相对路径,不是完整的 URL。比如说,你想屏蔽 example.com/admin/ 这个目录,只需要写 Disallow: /admin/,而不是把整个域名都写进去。很多人在这上面栽跟头,把完整网址填进去,结果规则失效。
第二个问题是通配符的使用。robots.txt 支持 * 号匹配任意字符序列。比如想要屏蔽所有以 .php 结尾的 URL,可以写 Disallow: /*.php$,这里的 $ 表示字符串结束。但注意,并非所有搜索引擎都完整支持这些符号,Google 支持 * 和 $,而其他一些爬虫可能直接忽略这些特殊字符,导致规则不生效。所以使用通配符前,最好确认目标搜索引擎的兼容性。
第三个坑是大小写敏感。robots.txt 中的路径匹配是区分大小写的。如果你的站点目录是 /Product/,却在文件里写了 Disallow: /product/,爬虫依然会访问 /Product/ 下的内容。写配置之前,务必先核对站点目录的真实大小写拼写。
一个规范且实用的 robots.txt 文件通常长这样:首先用 User-agent: * 声明规则对所有爬虫生效,然后用 Disallow 屏蔽后台目录(例如 /admin/、/includes/),用 Allow 放行必要的公共资源,最后用 Sitemap 指向站点地图文件。如果你使用的是 WordPress 等建站系统,核心目录如 /wp-admin/ 一般建议直接屏蔽,但 /wp-content/ 下的静态资源要确保放行,否则页面样式和图片可能加载异常。
写完文件后,建议自测一遍:打开浏览器访问"你的域名/robots.txt",确认内容正常显示;再到 Google Search Console 的"robots.txt 测试工具"中验证语法是否正确。另外务必记住,robots.txt 屏蔽后的 URL 仍然会被外部链接指向,搜索引擎可能基于这些外部信号进行收录,所以真正的敏感内容必须配合服务器端的访问控制来防护。把 robots.txt 当作流量引导的工具,而不是安全屏障,才不会被它的表面功能误导。
不会直接触发人工处罚。搜索引擎通常只会根据你提供的规则调整抓取行为,写错规则顶多造成该抓的没抓、该屏蔽的没屏蔽,不会主动惩罚站点。但如果你不小心屏蔽了整个网站,爬虫无法抓取任何内容,索引量会大幅下降,间接影响网站权重和流量。
没有固定的时间表。爬虫重新抓取 robots.txt 的频率取决于搜索蜘蛛的调度策略,短则几小时,长则几天。如果你想加速这一过程,Google 可以登录 Search Console 提交抓取请求,Bing 可以在 Bing Webmaster Tools 中操作。修改完成后,耐心等待即可。
两者的作用层次完全不同。robots.txt 在爬虫抓取之前就生效,属于事前拦截;meta robots 中的 noindex 指令在爬虫抓取页面内容后生效,属于事后指示。robots.txt 适合屏蔽不重要的目录以节省抓取预算,而想让某个页面不被收录,必须使用 noindex 标签。两者可以配合使用,但功能无法互相替代。
配置 robots.txt 不需要高深的技术背景,但求细心谨慎。牢记三个核心原则:路径填写相对路径而非完整 URL;留意大小写和通配符的兼容性;敏感目录必须叠加服务器端的访问控制。写完后务必自测语法和路径是否正确,不要想当然地以为写对了就万事大吉。把 robots.txt 当作流量引导的工具,配合 noindex 标签和服务器防护措施,你的站点抓取配置才能真正做到既高效又安全。小细节里的严谨,往往就是网站稳定收录的分水岭。