建站后千万别忘记配置 robots.txt 爬虫规则,对于搜索引擎发现你的站点非常重要,除了主动到搜索引擎平台提交网站之外,也要主动告诉搜索引擎网站里都有哪些网页?哪些希望被抓取?哪些不希望被抓取?
1 robots.txt 是什么?
robots.txt 是一个纯文本协议文件,放置在网站根目录(如
https://example.com/robots.txt),用于指导搜索引擎爬虫(如 Googlebot、Baiduspider)的抓取行为,是站点级别规定哪些页面可被引擎爬虫抓取,哪些禁止抓取(当然还有页面级别的,这个有机会介绍)。用于声明网站中禁止或允许被爬虫访问的目录/文件,控制内容收录范围。此规范非强制命令,而是行业通行的约定。
核心价值
- 隐私保护:屏蔽敏感目录(如 /admin/、用户后台);
- 优化性能:减少爬虫对无效页面(如死链、图片库)的请求,节省带宽;
- SEO 辅助:引导爬虫优先抓取重要页面,提升索引效率。
2 核心语法与指令解析
2.1 基础结构
User-agent: [爬虫名称] # 指定目标爬虫(* 代表所有)
Disallow: [禁止路径] # 定义禁止访问的URL
Allow: [允许路径] # 定义例外规则(需在 Disallow 后使用)
Sitemap: [网站地图URL] # 提交 XML 站点地图(可选)
值得注意:
- 指令区分大小写,路径以 / 开头,# 后为注释。比如:Allow: /blog 与 Allow: /Blog 是不同的。
- Sitemap指令是需要写全包含域名的全路径。
- 指令 Crawl-delay 表示抓取请求的频率,不过谷歌暂不支持。写法如:Crawl-delay: 15 表示爬虫抓取间隔不能小于15秒。比如 github 就有针对百度爬虫这样约束(https://github.com/robots.txt)
User-agent: baidu
crawl-delay: 1
- 可以针对不同爬虫单独指定爬取内容,通过换行进行分组,比如知乎就针对不同爬虫单独定义(部分截取)
User-agent: Googlebot
Disallow: /login
Disallow: /*?guide*
User-agent: Baiduspider-render
Disallow: /login
Disallow: /*?guide*
User-agent: Baiduspider-image
Disallow: /login
Disallow: /*?guide*
User-agent: Sogou web spider
Allow: /tardis/sogou/
Disallow: /
User-Agent: *
Disallow: /
当然相同的爬取内容,可以同时指定多个爬虫,如上面可简写成:
User-agent: Googlebot
User-agent: Baiduspider-render
User-agent: Baiduspider-image
Disallow: /login
Disallow: /*?guide*
User-agent: Sogou web spider
Allow: /tardis/sogou/
Disallow: /
User-Agent: *
Disallow: /
2.2 指令详解
指令 | 作用 | 示例 | 说明 |
User-agent | 指定规则适用的爬虫(如 Googlebot、* 表示通用规则) | User-agent: Baiduspider | 针对百度爬虫生效 |
Disallow | 禁止爬虫访问的路径(支持目录或文件) | Disallow: /private/ | 禁止访问 /private/ 下所有内容 |
Allow | 在禁止范围内设置例外(优先级高于 Disallow) | Allow: /public/image.jpg | 允许抓取被禁目录中的特定文件 |
Sitemap | 声明 XML 站点地图位置(便于爬虫发现新页面) | Sitemap: https://xxx/sitemap.xml | 需填写完整 URL |
2.3 路径匹配规则
- 目录屏蔽:Disallow: /data/ → 禁止访问 /data/ 及其子目录(如 /data/file.html);:
- 文件屏蔽:Disallow: /tmp/file.txt → 仅禁止特定文件;
- 通配符扩展
- Disallow: /*.jpg$ → 禁止抓取所有 JPG 文件;
- Disallow: /*?* → 屏蔽带问号参数的动态 URL(如 search?q=foo)。
3 文件放置与生效条件
位置强制要求
必须位于网站根目录(如
https://domain.com/robots.txt),子目录无效。比如:
- 文件位置:https://example.com/robots.txt
# 生效:
https://example.com/
# 不生效:
https://other.example.com/
http://example.com/
- 文件位置:https://www.example.com/robots.txt
# 生效:
https://www.example.com/
# 不生效:
https://example.com/
- 文件位置:https://example.com:443/robots.txt。标准端口号(HTTP 为 80,HTTPS 为 443,FTP 为 21)等同于其默认的主机名。所以以下都生效,
# 生效:
https://example.com:443/
https://example.com/
文件名规范
仅接受全小写 robots.txt,其他格式(如 Robots.TXT)无效。所以先看某网站的爬虫配置可在域名后直接添加 robots.txt 访问。
空文件处理
若文件为空或不存在,默认允许爬虫抓取全站。
4 实用配置示例
场景 1:全站开放抓取
User-agent: *
Disallow: # 留空表示允许所有
场景 2:禁止所有爬虫抓取
User-agent: *
Disallow: / # 屏蔽根目录下所有内容
场景 3:部分目录限制
User-agent: *
Disallow: /admin/ # 屏蔽后台
Disallow: /tmp/ # 屏蔽缓存目录
Allow: /blog/ # 允许抓取被禁目录中的博客
Sitemap: https://example.com/sitemap.xml
场景 4:针对特定爬虫设置
User-agent: Googlebot # 仅对谷歌生效
Disallow: /ads/
User-agent: * # 其他爬虫规则
Disallow: /private/
5 关键注意事项
- 非强制约束:恶意爬虫可能无视 robots.txt,敏感内容需额外加密(如登录验证)。
- 语法严谨性:路径错误(如漏写 /)会导致规则失效。
- 搜索引擎差异:部分指令(如 Crawl-delay 设置抓取延迟)仅特定引擎支持。
- 与 Meta Robots 互补:页面级控制(如 noindex)需在 HTML 中添加 <meta name="robots" content="noindex">。
最后
robots.txt 是网站与搜索引擎沟通的基础协议,合理配置可平衡收录需求与隐私保护。重点遵循:
根目录放置 + 精准路径语法 + 定期规则校验
原文地址:
https://ai-bar.cn/blog/2025_06_06_seo_robots