网站robots.txt文件配置方法:语法规则与常见避坑指南

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

网站根目录下的 robots.txt 文件,本质上是写给搜索引擎爬虫看的访问协议。它不参与页面渲染,却决定了爬虫能进入哪些目录、抓取哪些内容。配置得当,收录效率提升,服务器压力下降;配置不当,可能误伤整站抓取,或者把后台地址暴露给搜索引擎。理解它的语法逻辑和常见陷阱,比记一堆指令更重要。

1. 文件结构基础:指令与书写规范

robots.txt 必须放置在域名根目录,通常通过 https://域名/robots.txt 即可访问。文件内容按行解析,每行一条指令,由选择器和对应的规则值组成。注释行以井号(#)开头,仅用于说明,不影响执行。

一个最简单的全站放行配置如下:

User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml

这里第二行 Disallow 后没有路径,含义是允许所有爬虫访问。如果写成 Disallow: /,含义则变为禁止访问所有路径,两者差别巨大,写错一行极易引发线上事故。

2. 不同业务场景下的配置写法

实际运营中,几乎没有网站会长期使用默认配置。根据业务阶段和内容敏感程度,配置策略需要灵活调整。

2.1 临时整站屏蔽:测试环境或未上线站点

网站处于开发中、未正式发布,或正在大规模改版时,需要阻止所有爬虫抓取,此时用一条规则即可:

User-agent: *
Disallow: /

这个配置能快速阻止绝大多数爬虫进入全站目录。但请留意,它无法清除已被搜索引擎收录的旧页面,若此前页面已进索引,仍需要配合其他手段处理快照。

2.2 屏蔽指定目录:后台、会员中心与临时页面

大多数网站只需要精准屏蔽少数几个敏感目录。例如保留 /public/ 目录可抓取,同时屏蔽 /admin/ 与 /user/:

User-agent: *
Disallow: /admin/
Disallow: /user/
Allow: /public/

这里需要记住一个关键点:Allow 指令必须写在同组 Disallow 之后,且仅有部分爬虫支持此指令。如果你的服务器程序无法确认目标爬虫支持 Allow,更安全的选择是只写需要屏蔽的路径,让其余默认放行,避免因 Allow 失效导致误屏蔽。

2.3 针对不同爬虫的差异化设置

出于服务器负载或反爬考虑,你可能希望优先照顾 Googlebot,而对其他爬虫收紧限制。此时需要为不同爬虫设立独立的指令组,组间用空行分隔:

User-agent: Googlebot
Disallow: /internal/

User-agent: *
Disallow: /

第一组只针对 Googlebot,屏蔽 /internal/ 目录;第二组覆盖其余所有爬虫,禁止全站抓取。这种做法的好处是,不影响主流搜索引擎对核心内容的收录,同时减少低价值爬虫带来的资源消耗。

3. 实际应用中容易被忽视的细节

即便掌握了语法,配置过程中仍有一些细节常被忽视,值得单独说明。

一个典型的失误案例是:网站有 /api/ 接口目录,开发者在 robots.txt 中写入 Disallow: /api,结果导致所有以 /api 开头的路径,包括 /apiary 页面,全部被屏蔽。正确的写法应该是 Disallow: /api/,保留尾部斜杠以精确锁定目录。

4. 配置完成后的检查步骤

写好 robots.txt 后,不要直接上线就认为万事大吉。建议按以下顺序逐项检查,确认结果符合预期。

  1. 在浏览器中访问 https://域名/robots.txt,确认文件内容与预期一致,且无乱码或编码问题。
  2. 使用搜索引擎站长平台的 robots 测试工具,逐条检查 Disallow 规则的实际匹配效果。
  3. 重点核对 Allow 与 Disallow 共存的组,确认优先级是否符合预期。
  4. 检查是否误屏蔽了 CSS、JS 或图片等静态资源路径,这类文件的屏蔽会直接影响页面渲染效果。
  5. 修改后观察 1-2 周的抓取日志,确认收录量没有异常下降,服务器压力处于正常范围。

检查过程中,如果发现某个页面明明规则允许抓取,却始终不进索引,原因可能出在页面本身的 meta robots 标签或 HTTP 响应头上,此时需要从文件层面之外寻找问题。

5. 常见问题

5.1 问题一:robots.txt 能否完全阻止链接出现在搜索结果中?

不能。robots.txt 只是限制爬虫的抓取行为,对已在搜索引擎索引库中的链接没有作用。如果某个页面已经被谷歌或百度收录,即使之后在 robots.txt 中添加了屏蔽规则,旧链接仍可能在搜索结果中保留一段时间,只是点击后无法访问。彻底移除已收录页面,需要使用站长平台的索引移除请求。

5.2 问题二:一个文件里可以写多个不同爬虫的规则吗?

当然可以。文件中允许按段落为不同爬虫分别配置规则,比如先写 Googlebot 的规则,空一行后写百度蜘蛛的规则,再空一行写针对所有爬虫的通用规则。爬虫只会依据与自身匹配的第一段规则执行,因此特定爬虫的段落应放在通用段落之前。

5.3 问题三:Disallow 写成空和写成斜杠有什么区别?

两者含义完全相反。Disallow: 为空时,表示没有任何路径被禁止,即允许爬虫访问全站;而 Disallow: / 表示禁止访问所有路径。一字之差,前者放行全部,后者屏蔽全部,实际配置时务必看清,防止把线上站误设为屏蔽状态。

6. 总结

robots.txt 的配置核心在于理解前缀匹配、区分大小写以及指令兼容性三大要点。日常使用中,建议遵循最小权限原则:只屏蔽必要的敏感目录,不把全站规则写得过多过杂;对不同爬虫谨慎使用差异化策略;每次修改后都要通过站长工具验证生效结果。遇到页面无法抓取时,先检查文件本身,再排查 meta 标签与响应头,才能精准定位问题。把这份基础配置做好,网站的收录质量和服务器稳定性都会得到明显保障。

图1 图2

nginx