robots.txt配置攻略:核心语法与网站抓取优化要点

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

robots.txt 是网站根目录下的一个纯文本文件,专门用来和搜索引擎的爬虫“打招呼”,告诉它们哪些页面欢迎抓取、哪些地方希望绕行。合理利用这个文件,可以优化抓取预算,加快核心页面被收录的速度,同时避免私密内容被搜索引擎收录。

1. 认识 robots.txt 的工作机制

搜索引擎的爬虫每次造访一个网站,通常第一步就是请求 robots.txt 文件。就像进门前先看贴在墙上的“访客须知”,爬虫读到规则后,会遵守其中的约定来决定下一步的抓取行为。

这个文件必须存放在网站的根目录,并且需要通过 HTTP 或 HTTPS 协议直接访问。假如你的域名是 www.example.com,那么文件的访问地址就是 www.example.com/robots.txt。你可以直接在浏览器里输入这个地址,试试看自己网站的文件是否能正常打开。

需要特别留意的是,robots.txt 对所有可见的爬虫都是一视同仁的,它本质上是一个“君子协定”,而非一套安全防线。想防护核心数据和后台页面,绝不能依赖它,而是要靠密码验证或 IP 白名单等方式来解决。

2. 核心语法与常用指令详解

整个文件由一个个“规则块”组成,每个规则块以 User-agent 开头,注明适用对象,后面跟着若干条具体的指令行。最常见的指令有 Disallow、Allow、Sitemap 和 Crawl-delay。

2.1 指定爬虫:User-agent

User-agent 用来区分不同品牌的爬虫。如果想让规则对所有爬虫生效,就用星号(*)代替,比如:

User-agent: *

如果只想控制某一家搜索引擎的爬虫,就需要指定名称。比如针对百度爬虫(Baiduspider)或谷歌爬虫(Googlebot)单独写一条规则。不同搜索引擎的官方文档里一般都有对应的爬虫名称清单,可以对照查阅。

2.2 禁止抓取:Disallow

Disallow 后面接的是路径,这个路径支持目录或具体文件。以下示例禁止所有爬虫访问后台管理和临时目录:

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

请注意:路径是区分大小写的,/Admin/ 和 /admin/ 是两个不同的位置。如果 Disallow 后面什么都不写,其实代表“不限制”,即允许爬虫访问全站——这对新手来说很容易搞反,建议刻意记忆一下。

2.3 放个别路径:Allow

Allow 通常和 Disallow 搭配使用,用来在禁止范围内开出“小口子”。这个指令的生效取决于相关爬虫是否支持它,多数主流搜索引擎是支持的。看这个例子:

User-agent: Googlebot Disallow: /api/ Allow: /api/public/

规则的意思很明确:整体封禁 /api/ 目录,但单独放行 /api/public/ 这个子目录。当 Disallow 和 Allow 出现冲突时,遵循的是“更长的路径优先匹配”,也就是哪条规则路径写得更长,就按哪条执行。

2.4 提交地图与控制频率:Sitemap 与 Crawl-delay

在文件末尾加入 Sitemap 指令,可以直接把网站地图的地址告诉爬虫,有助于加快新链接的发现:

Sitemap: https://www.example.com/sitemap.xml

Crawl-delay 则用来设置两次请求之间的等待秒数,适合服务器负载有限或带宽紧张的站点。不过,各家爬虫对这条指令的响应程度差异较大,有的引擎完全不理会。如果特别在意抓取节奏,建议优先在站长平台后台的抓取频率设置里调整,效果更可控。

3. 典型配置场景与写法参考

接下来看几个实际场景中常见的配置写法。了解这些模板,可以直接套用在工作里。

场景一:只开放首页和公开目录。某些活动站点希望搜索引擎只收录首页,其余全部拦截,可以这样写:

User-agent: * Disallow: /

场景二:屏蔽带参页面。URL 后跟问号参数(如筛选、追踪)容易生成大量重复内容,常常招致无谓的抓取消耗。比如拦截所有带 sort 参数的地址:

User-agent: * Disallow: /*?sort=

场景三:允许抓图片但禁用搜索结果页。搜索结果页通常对用户没什么价值,可以让爬虫绕开:

User-agent: * Disallow: /search Allow: /search/api/

以上是几种常见的组合思路。多观察站点的日志以及在平台后台看到的抓取报告,能更清楚自己属于哪种情况。

4. 容易踩的坑与避坑建议

配置 robots.txt 虽然不难,但因疏忽导致的意外同样不少见。以下几个点值得格外留心。

5. 常见问题

5.1 修改 robots.txt 后,为什么久久没看到效果?

爬虫是按周期来读取文件的,通常不会实时刷新,部分搜索引擎可能隔几天甚至更久才重新读取。如果你的目标是让某条规则尽快生效,可以在对应搜索引擎的站长工具后台提交一次更新,或使用其抓取测试功能进行触发。合理的做法是:改完后保持耐心,同时观察日志确认爬虫是否访问了这个文件。

5.2 robots.txt 与 noindex 标签有什么区别?

两者分工完全不同。robots.txt 管的是“抓不抓”,控制爬虫是否来访问页面;noindex 标签管的是“收不收”,告诉抓完之后不要把页面放进索引。假如某页面想被快速移除出搜索,正确组合是:仍然允许抓取,但页面上加 noindex;反过来,想让爬虫压根不碰某个资源,才需要 robots.txt 来拦。

5.3 禁止所有爬虫是否等于保护了网站?

不等于。写 Disallow: / 只能拦住正常的网页爬虫,对恶意抓取工具和采集程序基本没有约束力。这些工具大多不会遵守 robots.txt 约定,甚至会故意忽略。真正的安全防护需要依赖访问控制、接口鉴权、防火墙等手段,robots.txt 在这里并不承担安全职责。

6. 总结

配置 robots.txt 的根本思路,是让搜索引擎的爬虫把时间花在真正值得抓的页面上。建议你从小范围开始:先梳理网站里需要拦截的路径清单,逐条写出规则,再利用站长工具的检测功能逐一验证。上线后定期查看抓取报告和日志,分析哪类页面被频繁访问、哪些重要页面始终没被光顾,据此不断微调规则。把 robots.txt 当作一项持续优化的运维工作,而不是写一次就搁置的临时任务,效果才会越来越好。

图1 图2

nginx