robots.txt 语法规则与配置避坑实用指南

📍 WDQWDWQD987AAAAA:216.73.217.145
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /8b76e28c9717.html
📄

每个网站根目录下都有一个纯文本文件 robots.txt,它像一份写给搜索引擎爬虫的访问说明,告诉对方哪些路径可以进,哪些区域不能碰。配置好了,搜索引擎会把有限的抓取额度花在关键页面上,新内容收录更快;配置错了,轻则页面迟迟不被索引,重则整站权重受损。这篇指南会带你从零看清它的语法逻辑和那些容易踩的坑。

1. 文件位置与职责边界

robots.txt 必须放在域名根目录下,最终访问地址就是「域名/robots.txt」。它约束的是爬虫的抓取动作,不直接决定页面是否进入索引。如果希望某个页面彻底从搜索结果消失,正确做法是给页面添加 noindex 标签——只靠 robots.txt 禁止抓取,页面可能一直停在"已发现但未索引"状态,反倒耽误事。

这里得提醒一句:robots.txt 对爬虫只是君子协定。主流搜索引擎会认真执行,但恶意采集程序根本不看。涉及后台、订单、用户隐私的目录,务必叠加登录验证、IP 白名单等硬防护,别把安全全押在 Disallow 上。每次改完文件,建议人工复核一遍路径,防止写错导致敏感目录意外暴露。

2. 核心语法逐项拆解

整个文件由若干规则组构成,每组以 User-agent 字段开头。字段名与值之间用英文冒号加空格分隔,字段名统一用大写,避免格式不兼容引发解析问题。

2.1 User-agent:规则给谁看

这个字段指定规则对哪个爬虫生效。「User-agent: Googlebot」只影响谷歌蜘蛛,「User-agent: Bingbot」只影响必应。覆盖所有搜索引擎则用「User-agent: *」。同一文件可为不同蜘蛛分别建规则组。当一个爬虫匹配多组规则时,主流搜索引擎按"最长匹配优先"处理——路径更具体的规则组优先级更高。

2.2 Disallow 与 Allow:开关指令

Disallow 声明禁止抓取的路径前缀,Allow 声明允许抓取的路径前缀。「Disallow:」后面留空(不写值)表示清空限制,等同允许全站抓取。两者冲突时,以更长的路径匹配为准。比如同时有「Disallow: /api/」和「Allow: /api/public/」,则 /api/public/ 下的资源会被放行。写路径时建议统一用根目录相对写法,并带上末尾斜杠,减少歧义。

2.3 Sitemap 与 Crawl-delay:辅助指令

Sitemap 字段用来声明站点地图的完整 URL,一般放文件末尾,方便爬虫直接发现内容清单。Crawl-delay 指定抓取间隔秒数,但谷歌早已声明完全忽略此指令;要控制 Googlebot 抓取频率,请到 Search Console 的「抓取速率设置」调整。Bing 等搜索引擎仍支持 Crawl-delay,可保留备用。

3. 高频场景的标准配置写法

以下罗列几个常见需求的标准格式,实际使用时替换路径即可,注意每条指令各占一行。

一个常见误区是把每次改版的新路径塞进 Disallow 而不清理旧规则,时间一长文件越来越臃肿,容易写错。建议每季度梳理一遍规则,把已不存在的路径删除,保持文件精简。

另外,如果站点是 http 与 https 混用,或存在多个域名,robots.txt 只在当前域名根目录下生效,需要为每个域名分别配置。使用 CDN 或镜像站时,要确认抓取到的文件版本与你预期一致,避免源站与缓存版本不一致导致规则失效。

4. 常见误区与避坑建议

不少站长习惯用「User-agent: *」加「Disallow: /」来临时屏蔽新站,但上线后忘记删除这条规则,结果整站长时间不被抓取。建议上线前做一次全面检查,确认 Disallow 值不是空规则且无「Disallow: /」残留。

还有人用 robots.txt 试图保护敏感页面,比如把后台目录写进 Disallow 就以为安全了。这样防不住恶意爬虫,反而可能让内部路径暴露在公开文件中。敏感目录应该用访问认证来防护,而不是靠这个公开文本文件。

另一个高频问题是路径写错。比如想屏蔽 /product/ 目录,却写成 /product 不带斜杠,这会同时屏蔽 /product 前缀的所有 URL(如 /product-detail/ )。建议写好规则后,在浏览器中直接访问被屏蔽的 URL,观察返回状态确认规则生效。

5. 常见问题

5.1 robots.txt 里写错路径会有什么后果?

可能屏蔽掉不该屏蔽的页面,导致重要内容长期不被抓取,收录率下降。也可能漏屏蔽敏感路径,让私密资源被搜索引擎收录。每次修改后应逐条验证规则,确认预期效果。

5.2 Allow 和 Disallow 冲突时听谁的?

以路径更长者为准。例如 Disallow 了 /abc/ 而 Allow 了 /abc/def/,那么 /abc/def/ 下的内容会被放行。这是 Google 等搜索引擎的统一处理逻辑,写规则时可以利用这一点实现"目录屏蔽但个别路径放行"。

5.3 用 robots.txt 屏蔽页面能防止被收录吗?

不能完全防止。它会阻止爬虫抓取,但页面可能仍被其他链接发现并出现在搜索结果中(只是没有描述内容)。要彻底从索引移除页面,必须使用 noindex 标签,同时配合 robots.txt 控制抓取。

6. 总结

robots.txt 是搜索引擎沟通的基础工具,语法简单却容易出错。核心记住三点:文件必须放根目录;路径写法要统一并带斜杠;敏感内容靠认证防护而不是靠 Disallow。改完规则后,去 Search Console 的「robots.txt 测试工具」里验证一下,确认没有误屏蔽重要路径。每季度清理一次废弃规则,保持文件干净,抓取效率自然更理想。

图1 图2

nginx