robots.txt配置全攻略:语法详解与常见错误规避

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

网站上线后,搜索引擎爬虫的第一站往往是根目录下的 robots.txt 文件。作为一份纯文本的抓取协议,它告诉爬虫哪些内容可以收录、哪些区域应当避开。写好这份文件,既能防止后台页面和临时目录泄露到搜索结果中,也能降低服务器无效请求的压力,确保爬虫将预算用在关键页面。

1. 规则构成:User-agent、Disallow 与 Allow 的协同使用

robots.txt 必须放置在域名根目录下,例如 https://yourdomain.com/robots.txt。文件需保存为 UTF-8 编码,每条指令独立成行,路径区分大小写,否则可能造成规则失效。

一份完整的规则通常包含以下几个要素:

以下是一份标准文件的示例:

User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://yourdomain.com/sitemap.xml

这段规则的含义是:默认放行所有爬虫,但屏蔽 /admin/ 路径,其中 /admin/public/ 子路径被单独放行。需要留意的是,Allow 不是通用指令,若爬虫不支持它,则会严格执行 Disallow 的全部限制。

2. 实用配置:三类典型场景的参考写法

不同类型的站点对抓取范围的需求差异很大,下面三套写法可以覆盖大多数常见情况。

2.1 完全开放:全站内容允许收录

对于内容型网站或新上线的站点,通常希望所有页面都能进入索引。此时只需声明一个空值的 Disallow:

User-agent: *
Disallow:

也可以直接省略 Disallow 行,效果相同。值得警惕的是,如果将 Disallow 误写为 /,整站将瞬间对所有爬虫关闭,收录会完全断供。建议修改后使用站长工具的抓取测试接口验证。

2.2 精确屏蔽:仅阻止某一类爬虫

如果你希望屏蔽特定搜索引擎的抓取,可以为该爬虫单独编写规则段,不影响其他爬虫的正常访问:

User-agent: PetalBot
Disallow: /

爬虫标识名称需查阅各搜索引擎官方文档,比如 Googlebot、Bingbot、Bytespider 等。这种分段写法适合站点只想被少数几个搜索服务收录的场景。

2.3 保护管理后台:允许公开页面的同时拦截敏感目录

企业站通常需要阻止后台入口、脚本库和零时目录被索引,同时保证主页和产品页正常抓取:

User-agent: *
Disallow: /cms-admin/
Disallow: /assets/private/
Disallow: /temp/

这里的关键点是:不要试图用 Disallow 来阻止所有静态资源,否则 CSS 和 JS 无法加载会影响页面评分。应将拦截范围精确到真正需要隐藏的私有目录。

3. 关键细节:顺序匹配、通配符与爬虫差异

robots.txt 并非越复杂越好,理解匹配机制才能写出高效规则。同一路径涉及多条规则时,爬虫按声明顺序逐条匹配,最先命中的规则生效。因此,Allow 应放在对应的 Disallow 之后才有效。

部分搜索引擎支持通配符 * 和结尾符 $,例如 Disallow: /*.pdf$ 可以统一屏蔽所有 PDF 文件。但这类高级语法并非所有爬虫兼容,若站点面向多搜索引擎,建议保持保守写法。

另一个常见误区是将敏感内容直接交给 robots.txt 拦截,但这种保护仅对遵守协议的爬虫有效。对于登录接口和用户数据页,应通过服务端鉴权配合限制访问,不能依赖文本协议作为唯一防线。

4. 变更与验证:发布后的检查步骤

任何一次规则变更都可能影响收录表现,发布前应做好收尾检查。可按以下步骤操作:

  1. 修改文件后先本地打开,检查是否有空行错位或编码异常。
  2. 通过浏览器直接访问 https://yourdomain.com/robots.txt,确认文件能被公开读取。
  3. 使用各搜索引擎提供的 robots 测试工具模拟抓取,查看规则命中结果。
  4. 在站长平台主动提交新规则,等待抓取更新后复查索引量的变化。

建议每次改动后间隔 3 至 7 天观察抓取日志,确认异常请求是否减少,目标页面是否仍在正常抓取。

5. 常见问题

5.1 修改 robots.txt 后,已有的收录页面会立即消失吗?

不会。robots.txt 只影响后续的抓取请求,已收录的页面依然存在于索引中,直到搜索引擎在下次抓取时发现规则变更并逐步处理。想要加速清理,可在站长工具中提交删除申请。

5.2 robots.txt 里能不能写注释?

可以。以 # 开头的行会被视为注释,常用于标注规则用途或变更时间,不会被爬虫解析。但注释应简洁,避免在注释中写入任何敏感信息,因为该文件是公开可读的。

5.3 Allow 和 Disallow 同时存在时,谁说了算?

取决于规则的先后顺序和爬虫的解析能力。支持 Allow 的爬虫(如 Googlebot)按声明顺序取最先匹配的规则;不支持 Allow 的爬虫则只识别 Disallow,并会忽略放行声明。

6. 结语

robots.txt 的编写原则是“最少且必需”:只拦截真正需要屏蔽的目录,避免过度封闭影响收录广度。内容型站点尽量保持开放的 Disallow 为空,企业站点则将限制范围具体到后台和临时目录。每次发布前验证规则可读性与实际匹配结果,并将文件内容保持在清晰可维护的状态。合理的规则能让搜索引擎更精准地理解你的站点边界,从而提升有效抓取比例。

图1 图2

nginx