什么是robots协议?详解robots.txt文件的存放位置、格式、使用技巧及作用
1. robots 协议是什么?
robots 协议(Robots Exclusion Protocol)**是一套“约定俗成”的规则,用来告诉搜索引擎爬虫(Spider / Bot):
哪些路径可以抓取
哪些路径不建议抓取
站点的站点地图(Sitemap)在哪
它的核心载体就是网站根目录下的 robots.txt 文件。
要特别记住两点:
robots 是“建议”,不是强制
主流搜索引擎一般会遵守,但它不是防火墙。你写了 Disallow,不等于别人就绝对看不到这些内容。robots 解决的是“抓取(crawl)”问题,不等于“收录(index)”问题
robots 禁止抓取:爬虫可能不再访问页面内容
但如果该页面 URL 被外部链接到,搜索引擎有时仍可能“知道它存在”,甚至在某些情况下展示一个“只有URL、无摘要”的结果(取决于搜索引擎策略)
2. robots.txt 文件存放位置
robots.txt 必须放在站点根目录,并且通过固定路径访问:
https://你的域名/robots.txt
例如:
https://www.example.com/robots.txt
几个常见误区:
❌ 放在 /static/robots.txt、/public/robots.txt —— 爬虫一般不认
❌ 放在二级目录:https://example.com/a/robots.txt —— 无效
✅ 多子域名要分别放:
https://www.example.com/robots.txt 管 www
https://m.example.com/robots.txt 管 m 子域
https://blog.example.com/robots.txt 管 blog 子域
3. robots.txt 的基本格式(怎么写)
robots.txt 是纯文本文件,按“规则组(Group)”组织:
3.1 最核心的三类字段
User-agent: 指定爬虫名称
Disallow: 不允许抓取的路径
Allow: 允许抓取的路径
并且还常见:
Sitemap: 声明站点地图地址
Crawl-delay: 抓取间隔
3.2 最简单示例(允许全部抓取)
User-agent: *
Disallow:
Sitemap: https://www.example.com/sitemap.xml
解释:
* 表示所有爬虫
Disallow: 为空表示不限制
声明 sitemap 方便爬虫更快发现页面
4. 常用规则写法与含义
4.1 屏蔽后台、隐私、测试目录(企业站常用)
User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /test/
Disallow: /tmp/
Sitemap: https://www.example.com/sitemap.xml
4.2 屏蔽站内搜索页、筛选参数页(电商/内容站常用)
站内搜索页通常内容重复、质量不稳定,容易拖累整体质量:
User-agent: *
Disallow: /search
Disallow: /search/
Disallow: /*?q=
Disallow: /*&q=
说明:带参数的 URL 规则是否生效,取决于搜索引擎对通配符的支持程度;你可以“先粗后细”,再结合站长平台做参数处理。
4.3 只屏蔽某类文件(比如 pdf、zip)——谨慎用
User-agent: *
Disallow: /*.pdf$
Disallow: /*.zip$
提醒:pdf 有时反而能带来搜索流量,如果你有白皮书、产品手册,别一刀切。
4.4 “禁止大目录,但放行某个子目录/文件”
典型场景:你想禁掉 /assets/,但允许抓取 CSS/JS(有利于渲染与理解页面)
User-agent: *
Disallow: /assets/
Allow: /assets/css/
Allow: /assets/js/
4.5 针对特定爬虫单独规则(例如只对某个爬虫限制)
User-agent: Baiduspider
Disallow: /api/
User-agent: *
Disallow:
说明:不同搜索引擎爬虫名字不同,写之前先确认常用 UA 名称(如 Googlebot、Bingbot、Baiduspider 等)。
5. 通配符与匹配规则(最容易写错的部分)
robots 的匹配是“路径匹配”,不是正则,但很多搜索引擎支持一些常用通配写法:
*:匹配任意字符
$:匹配 URL 结尾
示例:
Disallow: /*?*
含义:禁止抓取所有带 ? 参数的 URL(会比较狠,谨慎用)
示例:
Disallow: /*.php$
含义:禁止抓取以 .php 结尾的 URL
实操建议:
通配符规则先少用,确保不误伤;尤其别上来就 Disallow: /*?*,很多站会把核心页参数化,一刀切会把可抓取页面砍掉。
6. robots.txt 的作用到底有哪些?
把它理解成三件事:
6.1 控制抓取范围,节省爬虫“配额”
搜索引擎给每个站的抓取资源是有限的。robots 可以避免它把时间浪费在:
登录/后台
重复筛选页
站内搜索页
临时目录、无价值页面
把资源集中到:栏目页、内容页、产品页、专题页。
6.2 辅助站点结构表达
配合 sitemap、合理的目录策略,robots 能让爬虫更快理解:
哪些是核心内容区
哪些是功能区(不需要抓取)
6.3 作为“SEO卫生管理”的第一道门槛
它不直接让你排名暴涨,但能减少垃圾页面进入抓取链路,从长期看更稳。
7. robots 的边界:它不能替代这些手段
很多人用 robots 做“安全”或“去索引”,结果适得其反。
7.1 robots 不是保密工具
敏感内容要靠:
登录权限/鉴权
IP 白名单
服务器禁止访问
或直接不对外暴露
把敏感路径写进 robots,反而等于“公告栏”:告诉别人这里有东西。
7.2 robots 不等于“禁止收录”
如果你要明确“不要出现在搜索结果里”,更常用:
meta robots(页面级):noindex, nofollow
X-Robots-Tag(HTTP 头,适合非 HTML 文件如 pdf)
注意:如果你同时 robots 禁止抓取某页面,又在页面里写 noindex,爬虫抓不到页面内容,就可能无法读取 noindex 指令,效果会打折。想去索引时,通常要让爬虫“能访问到 noindex”。
8. 使用技巧(更贴近实战)
8.1 先保护“核心页可抓取”
上线 robots 前,先确认这些路径没被误伤:
首页、栏目页
重点内容/产品页
CSS/JS/图片(很多现代页面需要它们才能正常渲染)
8.2 新站不要上来就写得很“严”
新站更需要被抓取与理解。建议先:
只屏蔽后台/登录/测试目录
sitemap 写好
等收录稳定后,再处理参数页、筛选页等细分问题
8.3 robots + sitemap 配合使用
robots 负责“别抓哪些”
sitemap 负责“重点抓哪些”
两者结合,效率最高。
8.4 规则要可维护
别写成你三个月后自己都看不懂的样子。建议:
分组清晰
每条规则尽量短
用注释标记用途(# 开头为注释)
示例:
User-agent: *
# Block admin
Disallow: /admin/
Disallow: /login/
# Block internal search
Disallow: /search/
Sitemap: https://www.example.com/sitemap.xml
9. 常见错误清单(很多网站就栽在这里)
robots.txt 放错位置(不在根目录)
把整站屏蔽了:
User-agent: *
Disallow: /
这等于告诉所有爬虫:全站别抓(除非你是临时封站)
3) 误伤静态资源,导致渲染异常(CSS/JS 被禁)
4) 参数规则过猛,一刀切把可用页面也禁了
5) 用 robots 试图“隐藏隐私内容”(反而暴露路径)
6) 写了规则但没更新缓存/CDN,线上没生效
10. 三套可直接套用的 robots.txt 模板
10.1 企业官网/品牌站(推荐起步版)
User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /test/
Disallow: /tmp/
Sitemap: https://www.example.com/sitemap.xml
10.2 内容站/资讯站(加上站内搜索控制)
User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /search/
Disallow: /*?q=
Disallow: /*&q=
Sitemap: https://www.example.com/sitemap.xml
10.3 电商/多筛选站点(谨慎版,建议逐步加)
User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /cart/
Disallow: /order/
Disallow: /search/
# Parameter pages (use carefully)
Disallow: /*?sort=
Disallow: /*&sort=
Disallow: /*?filter=
Disallow: /*&filter=
Sitemap: https://www.example.com/sitemap.xml
