每个网站运营者都躲不开 robots.txt 这个基础文件,它是网站与搜索引擎爬虫之间的沟通契约,明确划出哪些区域允许访问、哪些必须避开。配置得当,搜索引擎就能把抓取预算花在刀刃上,核心页面更快被索引;可一旦写错,网站可能从搜索结果里悄悄消失。本文就从语法规则出发,逐层拆解常见配置思路和容易踩坑的地方。
robots.txt 是一个存放在网站根目录的纯文本文件,固定通过 https://你的域名/robots.txt 访问,无需额外配置即可被搜索引擎发现。它的核心任务只有一个:管理爬虫的"抓取"行为,决定哪些链接爬虫可以沿着走,哪些必须刹车停下。它并不过问"索引"层面的事——想让某个页面不进搜索引擎结果,正确做法是给页面加上 noindex 标签,别再指望 robots.txt 一拦了之。
另一个要认清的事实是:这个文件对正经爬虫是"君子协定",对恶意采集工具则形同虚设。涉及登录凭证、订单数据或内部文件路径的内容,不能把安全命脉全押在 robots.txt 上,必须叠加登录校验、防火墙规则等硬性防护。日常运维中也要时不时打开文件确认内容,防止误编辑把敏感目录路径直接暴露给外界。
robots.txt 的内容由若干规则组构成,每一组都以 User-agent 字段打头,整份文件遵循"字段名: 值"的格式。书写时统一使用小写字母,能最大程度避免不同爬虫的解析差异。
该字段声明接下来一组规则针对哪个爬虫。例如 User-agent: Googlebot 只约束谷歌的主爬虫;想覆盖所有搜索引擎时,用通配符写 User-agent: *。一份文件里可以按需组合多组规则,分别给不同爬虫下达不同的指令。需要留意的是,当同一个爬虫命中多处规则组时,主流搜索引擎遵循"最长匹配优先"的原则——路径写得更具体的那组规则拥有更高裁决权,而不是简单合并或一刀切。
Disallow 声明禁止爬虫访问的路径,Allow 声明放行的路径,两者配合使用才能精准控制权限边界。注意 Disallow: 后面紧跟冒号和空格再留空,表示清空全部限制、允许抓取全站。当两条规则指向同一路径且路径长度不同时,按前述"更长路径优先"原则裁决:比如同时存在 Disallow: /api/ 和 Allow: /api/public/,后者会因为路径更长而赢下对决,/api/public/ 下的内容照常被抓取。书写路径时尽量写完整目录,可以大幅减少歧义。
Sitemap 字段用来声明网站地图的完整 URL,例如 Sitemap: https://example.com/sitemap.xml,一般放在文件末尾,方便爬虫直接拿到内容清单。Crawl-delay 常用于设定两次抓取的最小间隔秒数,但谷歌早已公开声明忽略这一指令,想调整抓取频率需到 Google Search Console 的"抓取速率"设置里操作;Bing 等搜索引擎仍承认这一指令,可以按需保留。
下列示例覆盖了日常运维中高频出现的几种需求,可直接套用后替换其中的路径。
写完后务必在浏览器直接访问 /robots.txt 检查输出内容是否符合预期,并配合搜索引擎站长工具的"robots 测试"功能验证每条规则的生效情况。
下面这些错误在实战中反复上演,轻则降低抓取效率,重则造成页面集体掉出索引。
没有固定时间表。多数搜索引擎会定期重新抓取 robots.txt,常见周期从几小时到几天不等;急于测试效果时,可以通过 Google Search Console 的"网址检查"工具主动请求重新抓取,能显著缩短等待时间。
可以使用注释。以井号 # 开头的行会被搜索引擎忽略,适合用来标注每组规则的用途或修改日期,不会干扰正常解析。注意注释不能夹在规则行的中间,应单独成行书写。
利用"更长路径优先"原则即可。先写屏蔽父目录的 Disallow,再写放行子路径的、路径更长的 Allow 规则。例如屏蔽 /files/ 但放行 /files/public/,两条规则同时保留,搜索引擎会放行后者而拦截其余部分。
robots.txt 看似简单,却直接关系到搜索引擎对网站的信任与分配效率。配置的核心逻辑可以归纳为三点:一是分清"抓取"与"索引"的区别,别指望它承担 noindex 的职责;二是写全路径、善用"最长匹配"解决规则冲突;三是把安全底线放在协议文件之外,敏感内容必须有硬防护。每次改动后记得用站长工具检测验证,让这份基础的"君子协定"真正为网站提速。