每个网站运营者都要面对 robots.txt 这个基础文件。它本质上是一份写给搜索引擎爬虫的访问协议,用来明确哪些目录可以抓取、哪些内容应当绕行。配置恰当,能让爬虫把有限的抓取预算花在关键页面上;配置失误,则可能让整站从搜索结果中消失。下面把它的语法细节和容易踩坑的地方逐一讲清楚。
这个文件必须是纯文本格式,且只能放在网站根目录下,通过 https://你的域名/robots.txt 这个固定地址访问。它的职责仅限于管理爬虫的抓取行为,跟页面是否被索引没有直接关系。如果目标是让某张页面不出现在搜索结果里,正确做法是给页面添加 noindex 标签,robots.txt 管不到收录环节。
值得强调的是,robots.txt 对爬虫而言只是君子协定。主流搜索引擎的爬虫会严格遵守,但恶意采集工具根本不会理睬这些规则。涉及隐私信息或商业机密的目录,必须叠加登录验证、IP 白名单等安全措施,不能把防护希望完全寄托在这个文件上。建议每隔一段时间检查一遍文件内容,防止误编辑导致敏感路径被公开暴露。
robots.txt 由若干个独立的规则组构成,每一组都以 User-agent 字段开头,书写格式统一为字段名加冒号加值。为了兼容性,字段名一律使用小写字母。
这个字段声明规则的作用对象。写成 User-agent: Googlebot 就只对谷歌爬虫生效;要覆盖所有搜索引擎,则使用通配符 User-agent: *。一个文件里可以同时存在多个规则组,分别给不同爬虫授权。主流搜索引擎在遇到同一爬虫命中多组规则时,会优先采用最长匹配的那组,这个逻辑需要仔细理解。
Disallow 声明禁止抓取的路径,Allow 声明允许抓取的范围。有个细节需要留意:Disallow 留空代表解除限制,也就是允许爬虫抓取整个站点。当两条规则产生冲突时,搜索引擎遵循的通行原则是比较路径长度,更长的路径规则优先。举例来说,同时设置了 Disallow: /api/ 和 Allow: /api/public/,那么后者所在的路径会获得放行权限。
Sitemap 指令用来声明网站地图的完整 URL,方便爬虫直接获取内容索引,习惯上放在文件末尾。Crawl-delay 则用来设定抓取间隔,但谷歌早已声明忽略这一指令,需要控制抓取频率时应前往 Google Search Console 设置。Bing 等其他搜索引擎仍支持该指令,可以按需保留。
下面是几个常用场景的标准写法,可以直接复制后替换路径使用。
书写时建议采用相对根路径的目录写法,避免歧义。每条指令结束后换行,不同规则组之间用空行分隔,保持文件结构清晰可读。
许多站点意外消失或收录异常,往往不是搜索引擎的问题,而是 robots.txt 里藏着逻辑漏洞。以下问题在日常排查中最为常见。
Disallow: / 会让爬虫无法抓取整站,适用场景极其有限。如果只是想临时调整某个目录,一定要明确写出具体路径。曾经有站点误将全站屏蔽配置上线,导致首页都从索引中消失,花费不少时间才恢复。
robots.txt 限制的是抓取行为,不能阻止页面被收录。恰当的 noindex 标签才能真正控制索引。反过来讲,被 noindex 的页面仍然会被爬虫访问,两者用法完全不同。
字段名与冒号之间不要加空格,路径匹配在部分搜索引擎中区分大小写。标准做法是用与站点内实际路径完全一致的大小写书写,避免绕弯路。
在文件末尾加上 Sitemap 指令能显著缩短爬虫发现新页面的时间。针对大型站点,这几乎是标配操作。
每次修改 robots.txt 后,建议使用各大搜索引擎提供的 robots.txt 测试工具验证规则是否符合预期。模拟抓取关键页面,观察返回状态是否正常。同时确认文件可通过公网地址直接访问,响应状态码应为 200。
使用井号 # 开头即可添加注释行,注释内容不会影响规则解析。建议在每组规则上方写明用途,便于团队协作维护。
搜索引擎会按最长路径匹配原则判断,更具体的规则优先执行。可以利用这一特性放行某个目录下的部分子路径,但需要先理清层级关系。
爬虫会在下一次抓取文件时读取到更新,通常需要几小时到几天不等。测试工具可以实时反馈规则校验结果,线上生效存在一定的缓存延迟。
配置 robots.txt 的核心在于明确抓取边界,而不是试图用它控制索引状态。建议从最小化屏蔽原则出发,只对确有必要的目录设置 Disallow,并在每次变更后通过官方测试工具复核一遍。同时把 Sitemap 地址写进文件末尾,让爬虫更快触达核心内容,这样既能保护敏感路径,又能让收录效率保持稳定。