robots.txt 写法详解:语法规则与常见配置错误

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

robots.txt 是站长与搜索引擎爬虫沟通的桥梁,它决定了爬虫可以访问网站的哪些区域。一份配置得当的 robots.txt 能有效保护敏感目录,并引导爬虫将资源集中在高质量内容上;反之,错误的配置可能导致网站收录异常,甚至整站从搜索结果中消失。下面我们系统梳理它的核心写法和高频错误。

1. 文件放置位置与核心语法

robots.txt 必须是一份纯文本文件,文件名全部使用小写字母,并放置于网站域名的根目录,例如 https://example.com/robots.txt。文件内容由一条或多条规则记录组成,记录之间用空行分隔。每条记录首先使用 User-agent 声明规则适用的爬虫,随后用 DisallowAllow 指明允许或禁止的路径。

指令行的标准格式为“字段名: 值”,例如 Disallow: /private/。字段名不区分大小写,但路径值通常区分大小写,在书写规则时需格外注意。文件中的注释以井号 # 开头,可独占一行或置于指令行末尾,用于解释该条规则的目的,便于后期维护和团队协作。

一个核心原则是:一个 User-agent 声明后可以跟随多条 DisallowAllow 指令。尽管主流搜索引擎支持使用更具体的 Allow 来覆盖 Disallow,但不同爬虫对优先级的具体处理细节存在差异,跨搜索引擎配置时建议分别进行验证。

2. 常见指令的配置方法与示例

2.1 全站拦截与目录限制

临时关闭整站抓取,或阻止所有爬虫访问,可以使用通配符星号实现:

User-agent: *
Disallow: /

若只想限制特定目录,例如后台管理路径或临时文件夹,可以这样设置:

User-agent: *
Disallow: /admin/
Disallow: /temp/

这里存在一个常见的认知误区:目录末尾的斜杠至关重要。写成 /admin/ 仅匹配 admin 目录及其子页面;若漏写斜杠变为 /admin,则会匹配所有以 admin 开头的路径,例如 /administrator/admin-panel,这些本不该被屏蔽的页面也会受到波及,最终影响正常内容的收录。

2.2 助 Allow 指令放行个别子路径

当需要整体屏蔽一个目录,但同时又想保留其中某一个特定子路径时,就需要将 DisallowAllow 结合使用。比如,仅允许爬虫访问网站博客下的专题栏目,其余博客内容一律不抓取:

User-agent: *
Disallow: /blog/
Allow: /blog/featured/

该规则的生效遵循通用的匹配准则:当两条规则匹配到的路径长度一致时,Allow 指令拥有更高优先级;若路径长度不同,则更长、更具体的路径规则优先。因此,上述配置能确保 /blog/featured/ 正常被抓取,而博客其他子页面则继续维持屏蔽状态。

2.3 针对不同爬虫进行差异化配置

网站可以针对不同搜索引擎爬虫制定差异化的抓取策略。例如,允许 Googlebot 抓取整站,同时限制其他爬虫访问网站图片资源较多的目录:

User-agent: Googlebot
Disallow:

User-agent: *
Disallow: /images/

需要注意的是,Disallow: 后留空代表“无任何限制”。此外,所有规则记录应保持独立,不应将适用不同爬虫的指令混写在同一条 User-agent 声明之下。

2.4 通配符与结束符的运用

在部分搜索引擎的解析规则中,支持使用星号 * 匹配任意字符序列,以及使用美元符号 $ 匹配路径结尾。例如,屏蔽所有以 .pdf 结尾的文件:

User-agent: *
Disallow: /*.pdf$

这一语法并非所有爬虫都支持,特别是对 $ 结束符的解析差异较大。因此,若网站内容依赖 PDF 等静态文件,建议在使用通配符前先确认主要目标爬虫的官方文档说明,避免规则被忽略。

3. 高频配置错误与调整思路

3.1 误用 Disallow 屏蔽 CSS 和 JS 文件

网站页面渲染依赖外部的样式表和脚本文件。若在 robots.txt 中误将这些静态资源目录设置为 Disallow,搜索引擎将无法获取完整的页面渲染信息,可能导致页面评估不准确,甚至影响排名。此类文件的抓取一般不会占用过多配额,不建议随意屏蔽。

3.2 依赖 robots.txt 保护敏感数据

robots.txt 只是一个“君子协定”,它无法阻止恶意程序或非正规爬虫的访问。有鉴于此,后台管理页面、用户隐私数据目录等敏感区域,应依靠服务器端的身份验证和 IP 白名单等机制进行硬性保护,而不应把希望全部寄托在 robots.txt 上。

3.3 忽略文件的大小与抓取开销

单个文件体积应保持在较小范围(建议不超过 500KB)。一个庞大的 robots.txt 不仅会拖慢规则解析,还可能挤占站点的抓取预算。如果规则数量过多,说明网站目录结构可能需要重新梳理。同时,确保文件返回 200 状态码,避免出现 404 或重定向,否则爬虫将默认允许抓取所有内容。

4. 提交后的验证与监测

完成 robots.txt 的上传后,应立即通过搜索引擎站长平台提供的“robots 测试工具”或类似功能进行验证。将文件内容粘贴进去,然后输入网站的关键 URL,检查该地址被允许还是被禁止访问。如果被禁止的页面并不在预期范围内,需要及时修正规则。

在规则修改生效后,应持续观察网站的抓取统计与索引变化。建议将修改时间记录在案,当收录情况出现异常波动时,可以对历史配置进行回溯排查。

5. 常见问题

5.1 空白的 Disallow 是什么意思?

Disallow: 后面没有任何内容时,它表示允许所有爬虫访问网站的所有路径。它常用于为某个特定的爬虫(例如 Googlebot)显式地开放全站访问权限,以覆盖掉可能存在的其他限制规则。

5.2 robots.txt 能阻止页面出现在搜索结果中吗?

不能直接保证。robots.txt 的核心作用是控制爬虫的“抓取”动作。如果页面在其他网站有外链,搜索引擎仍可能通过其他途径发现页面 URL,并在没有抓取页面内容的情况下将其收录(但通常不展示完整摘要)。若要真正阻止页面被收录,应使用 noindex 标签或响应头,并确保该页面能被爬虫正常抓取以读取到该指令。

5.3 网站改版后 robots.txt 需要同步更新吗?

需要。网站目录结构或 URL 规则发生变化后,旧有的屏蔽规则可能不再适用,甚至可能误伤新地址。例如,将 /old-blog/ 迁移至 /new-blog/ 后,应及时更新对应的 Disallow 规则,清除掉已不存在的旧路径,并检查新路径是否被意外拦截。

6. 总结

编写 robots.txt 的核心原则是“精准控制,最小影响”。在动手修改之前,先明确网站中哪些资源需要被保护、哪些路径希望被优先抓取。宁可使用较少的规则,也不要用过于宽泛的屏蔽条件。上线后务必借助站长工具进行规则测试,并关注后续收录数据的变化,才能确保这份协议真正为网站的 SEO 效果加分。

图1 图2

nginx