对任何运营网站的人来说,robots.txt 都是一份绕不开的配置文件。它位于站点根目录,用简单的几行指令就能告诉搜索引擎蜘蛛,哪些目录欢迎抓取,哪些区域谢绝访问。配置得恰到好处,搜索引擎的抓取预算能集中投向关键页面,新内容被收录的周期也会缩短;但要是语法出错或者路径写岔,整站被搜索引擎降权甚至移出索引的情况也时有发生。接下来我们细致梳理这份文件的核心语法,并指出那些容易让人栽跟头的细节。
这份文件的作用对象是爬虫,它在浏览器中直接通过“域名/robots.txt”就能访问。它的角色更像一个引导员,告诉爬虫哪些路可以走,但最终是否把页面放进索引库,决定权并不在它手里。如果你真正想要的是让某个页面彻底从搜索结果中消失,应当使用 noindex 元标签。robots.txt 只管爬虫来不来得及抓取,对已经抓取过的页面是否进入索引,它无权干涉。举个例子,某个页面被你在 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 和 Allow 值里出现的都是相对路径,比如 Disallow: /private 会屏蔽站点根目录下的 private 文件夹,但这并不影响其他目录中同名的 private 路径。规则只匹配指定的那一层,留神别把层级关系弄混。
第二个坑在于通配符的误用。早期版本的协议并不支持通配符,现在蜘蛛对 * 和 $ 的支持度有所提高,但兼容性仍不统一。比如 Disallow: /*.php$ 想屏蔽所有以 .php 结尾的地址,在部分爬虫那里可能完全不生效。若想稳妥,改用明确的目录或文件路径更可靠。
第三个坑是大小写问题。规则路径对大小写敏感,网站根目录下的 Private 和 private 是两个完全不同的路径。若站点本身对大小写不敏感,配置时必须保持与真实路径完全一致,否则会漏掉部分页面。
每当完成修改,第一时间在浏览器里打开“域名/robots.txt”查看原始内容,确保语法没有缺漏。Google Search Console 和必应站长工具都提供了 robots.txt 测试器,能模拟抓取并指出规则冲突或解析错误。若是小型站点,也可先用文本编辑器检查括号和空格是否规范。
配置时建议控制规则条数,不要写上百行冗长规则。越简洁越容易维护,也减少误匹配的可能。每次改动前先备份原文件,万一新规则导致站点收录骤降,可快速回滚版本。
另一个实操技巧是区分测试环境与正式环境。开发阶段的测试域通常不希望被索引,可直接在根目录放一份全部 Disallow 的配置;正式上线前再切换成正式配置,避免测试链接进入搜索库。
可以。以 # 开头的行会被忽略,常用于标注规则组的用途或修改日期。但别在路径值中间插入注释,那会打乱解析结果。
对同一 URL 而言,规则匹配遵循“最长匹配优先”原则,路径越长的规则获胜。若两条规则长度完全相同,则按文件出现顺序,先出现的规则优先。
视爬虫的抓取频率而定,通常数小时到数天内会重新读取该文件。若想加快,可在搜索引擎站长工具中手动请求抓取,或等待下一次自然抓取周期到来。
robots.txt 是搜索引擎与站点之间的第一道沟通关卡,写得好能省下大量无效抓取,写得差则可能拖累整站收录。建议从最小规则集起步,明确区分可抓取与不可抓取区域,并在每次调整后借助站长工具进行验证。始终记住,核心安全不能依赖这份文件,需配合访问控制等多层防护,才能真正驾驭抓取节奏。