网站的可见性始于搜索引擎爬虫的“第一步”。
而这一步,往往由一个看似简单却至关重要的文件所决定——robots.txt。
它是网站与搜索引擎之间高效沟通的桥梁。
robots.txt就是放在网站根目录的一个纯文本文件,专门用来告诉Googlebot、Bingbot这些爬虫——哪些地方可以进,哪些地方别进。

就这么一个东西,配对了效果立竿见影,配错了能让你网站从搜索结果里消失。
它的位置固定,必须放在根目录下。
比如小魏博客放根目录后访问,https://xiaoweiboke.com/robots.txt,不能放子目录里
爬虫进站第一件事就是去找这个文件,找到了就按规则走,找不到就默认全站可抓。
robots.txt的基础语法
User-agent:告诉规则给谁听
这行用来指定规则适用于哪个爬虫。
大多数情况下直接用通配符 * 就够了,表示对所有爬虫生效。
User-agent: * — 适用所有爬虫
User-agent: Googlebot — 只针对Google的爬虫
User-agent: Bingbot — 只针对Bing的爬虫
如果你同时写了通用规则和针对某个爬虫的专属规则,爬虫会优先用跟自己最匹配的那组,而不是叠加。
Disallow:拦什么路径
这是用得最多的指令,告诉爬虫别进这个路径。
Disallow: /admin/ — 屏蔽后台目录
Disallow: /search/ — 屏蔽站内搜索结果页
Disallow: / — 屏蔽整站
Disallow: / 别乱用,上线了忘删是灾难
Allow:在Disallow里开个口子
有时候你要屏蔽某个目录,但里面有个子路径是需要被抓的。
这时候Allow就派上用场了,而且更具体的规则优先级更高。
比如这样写:
Disallow: /admin/
Allow: /admin/public/
结果就是admin下其他路径不抓,但 /admin/public/ 可以正常访问。
robots.txt通配符的用法
robots.txt支持两个特殊符号,用好了能省很多事,用错了也能造成奇怪的屏蔽问题。
* 是通配符,匹配任意字符序列
比如 Disallow: /product* 会屏蔽所有以 /product 开头的路径,不管后面接什么。
$ 是结尾匹配
Disallow: /*.pdf$ 只屏蔽以 .pdf 结尾的URL。
如果不加 $ ,那 /files/pdf-guide/ 这种路径也会被匹配进去,这显然不是你想要的。
实际测试发现,通配符规则越复杂,出错的概率越高。
能用精确路径搞定的,就别用通配符。
优先级规则,很多人搞不清楚
当Allow和Disallow同时存在时,规则的优先级是按路径长度(具体程度)来判断的——越具体的规则优先级越高。
举个例子:
Disallow: /blog/
Allow: /blog/best-posts/
这种情况下,/blog/best-posts/ 会被允许抓取,因为它比 /blog/ 更具体。
如果两条规则长度一样,Allow通常会赢。
很多新手在这里踩坑,以为Disallow写在前面就优先,其实顺序没那么重要,关键看哪条规则跟URL匹配得更精准。
robots.txt常见写法参考
WordPress网站的基础配置
WordPress站点最常见的需求就是把后台目录、核心文件目录挡住,同时保留一个Ajax接口的访问权限,因为很多主题功能依赖它。
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /xmlrpc.php
Sitemap: https://xiaoweiboke.com/sitemap.xml
xmlrpc.php这个文件容易被暴力扫描,屏蔽掉对安全也有一点额外的帮助,虽然最终还是要靠服务器层面的配置。
电商网站的配置思路
电商站的robots.txt一般要处理的东西比较多。
购物车、结算页、用户中心这些是必须挡的,没有任何收录价值。
站内搜索结果页如果不挡,爬虫可能会把大量重复内容全部抓走。
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /user/
Disallow: /search/
Sitemap: https://xiaoweiboke.com/sitemap.xml
参数化URL的处理要谨慎一些。
有人喜欢用 Disallow: /*?* 一刀切屏蔽所有带?参数的URL,逻辑是对的,但执行前要确认没有重要页面会被误伤。
这个规则最好配合实际URL结构测试一遍。
只允许Googlebot进,其他全挡
这种场景不常见,但偶尔有需求。
写法是:
User-agent: Googlebot
Disallow:
User-agent: *
Disallow: /
Sitemap: https://xiaoweiboke.com/sitemap.xml
Disallow后面什么都不写,表示没有限制,允许全抓。
所以上面这种写法的解释就是,谷歌可以抓取,其他全部不允许抓取。
robots.txt加入Sitemap地图
这个很多人不重视,但其实挺有用。
在robots.txt里加一行Sitemap路径,相当于给每个来访的爬虫都发了一张地图,不只是Google,Bing也会用到。

比如小魏博客robots.txt文件里加入:Sitemap: https://xiaoweiboke.com/sitemap.xml
就算你已经在Google Search Console里提交过了,robots.txt里也值得保留这行。
robots.txt的使用案例
讲个实际场景。
一个电商网站,产品筛选页、购物车页、用户账户页加起来可能有几万个URL。
如果不做任何限制,Googlebot会一股脑全抓,结果就是——爬了大半天重复内容,真正重要的产品详情页反而抓取频率很低,甚至新上的页面好几天没收录。
这就是抓取预算(Crawl Budget)的问题。
Google给每个网站分配的抓取资源是有限的,中小站可能感知不强,但对于页面量上万的网站,这个概念非常关键。
通过robots.txt把低价值页面挡在外面,爬虫就能把时间花在刀刃上——核心产品页、内容页、新发布的文章,这些才是你真正想让Google看见的东西。
Robots.txt和noindex的区别
这个区别很重要,如果你搞混了,后果可能比你想的严重。
| 特性 | robots.txt (Disallow) | meta noindex标签 / X-Robots-Tag HTTP响应头 |
|---|---|---|
| 作用 | 阻止爬虫抓取页面 | 允许爬虫抓取,但阻止其将页面收录到索引中 |
| 可见性 | 页面内容不会被抓取,但URL可能被索引 | 页面内容会被抓取,但不会出现在搜索结果中 |
| 安全性 | 无法保护隐私数据 | 无法保护隐私数据 |
| 权重 | 阻止权重流向被屏蔽的URL | 权重可以流经页面,但不会传递给链接到的页面 |
| 使用场景 | 优化抓取预算,屏蔽低价值页面 | 阻止低质量或敏感页被索引,但仍需抓取以发现链接 |
robots.txt的Disallow:阻止爬虫访问页面。但URL本身可能还是会被收录,只是没有描述内容。
meta noindex:允许爬虫访问页面,但告诉它不要把这个页面放进搜索结果。
这里有个特别容易踩的坑:
如果你给某个页面同时设了Disallow和noindex,爬虫因为Disallow进不来,就永远看不见noindex标签,最终这个页面还是可能被收录。
所以实操逻辑应该是这样的:
想省抓取预算、减少低价值页面被抓 → 用 Disallow
想阻止页面出现在搜索结果,但还需要爬虫进来发现其中的链接 → 用 meta noindex 或 X-Robots-Tag
两个一起用来阻止索引 → 别这样,会失效
Robots.txt的常见误区
我早期做站的时候也犯过这个错——把一些不想让人看见的页面路径写进robots.txt的Disallow里,以为这样就”藏起来”了。
后来才明白,这根本起不到保护作用。
robots.txt只对”听规矩”的爬虫有效,那些恶意扫描器根本不管你这个。
更坑的是,如果有外部链接指向你屏蔽的页面,Google照样可能把URL收进索引,只是没有描述片段而已。
所以记住一点:robots.txt是用来管理抓取行为的,不是安全机制。
真正需要保护的页面,要用密码验证、服务器端权限控制,或者加 meta noindex 标签来处理。
robots.txt常见的错误写法
把整站给屏蔽了
听起来很蠢,但真的发生过。
某些团队在测试环境用 Disallow: /,部署的时候没换回来,结果生产站直接对搜索引擎关门了。
等发现的时候可能已经掉了好几天的流量。
防止这个问题最好的方法:建立部署checklist,上线前必须检查robots.txt的内容,而且要用GSC验证一次。
屏蔽了CSS和JS文件
以前确实有人这么做,觉得这些文件不包含内容,屏蔽掉能节省抓取。
但Google现在需要渲染页面才能完整理解内容,如果CSS和JS加载不了,它看到的页面和真实用户看到的可能完全不一样。
评分自然也会出问题。
除非你有非常明确的理由,否则不要屏蔽任何跟页面渲染相关的静态资源。
拿robots.txt当安全措施用
前面说过了,但这个坑太常见,值得再提一次。
把登录页、后台路径、API接口写进Disallow,以为这样就保护了数据,其实你只是在robots.txt里公开了这些路径的存在,任何人都能去看。
robots.txt和Sitemap的关系可以理解为:一个负责告诉爬虫”这些不用去”,另一个告诉爬虫”这些一定要去”。
两个配合起来,才能比较完整地引导爬虫按你的意图工作。
对于页面量大的网站,Sitemap能帮助Google更快发现新内容。
如果只靠爬虫自己从首页一层一层往下找,很多深层页面可能要等很久才被发现。
在robots.txt里声明Sitemap位置,等于每个来访的爬虫都能直接拿到你整理好的页面清单。
生成robots.txt用什么工具
WordPress用户的话,Yoast SEO和Rank Math都有内置的robots.txt编辑界面,而且会自动帮你把Sitemap路径写进去,用起来比手撸方便不少,出错概率也低。
非WordPress站点的话,可以用Seoptimer或者类似的在线生成工具先生成一个基础版本,再根据自己网站的实际结构手动调整。
生成的内容一定要过一遍,别直接就用,因为工具不知道你的业务逻辑。
最后还是那句话——写完之后记得测试,用Google Search Console的网址检查工具跑一遍,确认规则按预期生效。
这一步花不了几分钟,但能帮你避掉很多不必要的麻烦。
robots.txt文件测试
我见过不止一次,有人改完robots.txt直接上线,过几天发现流量断崖下跌,一查才发现把整站给屏蔽了。
这种错误完全可以在部署前避免。
Google Search Console是最直接的验证工具。
用”网址检查工具”输入任意URL,可以看到它有没有被robots.txt拦截,以及Googlebot上次是什么时候抓的。

改了文件之后,也可以在这里请求重新抓取robots.txt,加速规则生效。
除此之外,Screaming Frog这类爬虫工具在抓站的时候会解析robots.txt,可以帮你看清楚哪些URL被屏蔽了、哪些能正常抓取。
Ahrefs和Semrush的Site Audit功能也都会检查robots.txt,报出配置层面的潜在问题。
最基础的检查方式就是直接在浏览器里访问 https://域名/robots.txt,如果返回的是200状态码并且内容正确,说明文件部署没问题。
如果是404,就说明文件没放对位置。
robots.txt如何限制AI爬虫
除了传统的搜索引擎,网站现在还要面对一批专门为大模型训练或实时问答抓取内容的爬虫。
是否放行它们,本质是一道权衡题:内容被无偿拿去训练模型的风险,对比在ChatGPT/Perplexity/Claude 等产品中被引用带来的曝光(即 GEO,生成式引擎优化)。
常见AI爬虫一览表
| 爬虫 UA 标识 | 所属公司 | 用途 |
|---|---|---|
| GPTBot | OpenAI | 模型训练数据抓取 |
| ChatGPT-User | OpenAI | ChatGPT 实时联网问答时的即时抓取 |
| OAI-SearchBot | OpenAI | ChatGPT 搜索功能索引 |
| ClaudeBot | Anthropic | 模型训练数据抓取 |
| Claude-User / Claude-SearchBot | Anthropic | Claude 实时问答/搜索引用抓取 |
| PerplexityBot | Perplexity | 实时问答引用抓取 |
| Google-Extended | 控制内容是否用于 Gemini/AI Overviews 训练(独立于 Googlebot) | |
| CCBot | Common Crawl | 开放数据集,被多家模型厂商引用 |
| Bytespider | 字节跳动 | 豆包等模型训练 |
注意:这些 UA 会不定期更新,实际部署前建议查阅各厂商官方文档确认最新列表。
策略一:全面屏蔽(保护内容资产)
适合内容为核心资产(付费墙、原创深度内容、代码库等)、不希望被训练但又不介意暂时失去 AI 引用的站点。
robots.txt文件加入
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /局限性:robots.txt 是”君子协议”,不具备强制力。
对于坚持抓取的爬虫,需要在 CDN/WAF 层(如 Cloudflare 的 AI Bot 管理)通过 UA 或行为指纹做硬性拦截。
策略二:优雅放行(换取 GEO 曝光)
适合以流量转化、品牌曝光、线索获取为目标的营销型/资讯型站点。
核心逻辑是”你可以读,但请带链接回答”。
保持训练类爬虫与实时问答类爬虫分开授权:例如允许 ClaudeBot(训练)抓取产品文档区,但更看重 Claude-User(用户实时提问时触发)能正常访问,因为后者直接关联”被引用曝光”。
提供结构化摘要,降低模型”抓错重点”的概率:
在页面头部保留清晰的<title>、meta description
使用 FAQ、要点列表、Schema.org 结构化数据(Article、FAQPage、HowTo)辅助模型抽取
部署 llms.txt(新兴的非官方标准,类似给 AI 爬虫看的”网站地图+简介”,放在根目录 /llms.txt),用简洁 Markdown 概述站点内容与关键页面链接,提升被准确引用的概率。
区分训练与索引的授权层级(如果站点体量较大,可考虑):
开放摘要/首屏内容供索引引用
对全文/正文细节仍设置访问限制(例如结合 noai meta 标签或分区 Disallow)
robots.txt(放行示例,仅屏蔽训练类,保留问答引用类)
User-agent: GPTBot
Disallow: /premium/
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: ChatGPT-User
Allow: /落地建议
先做流量与日志分析:通过服务器日志(Nginx access log)统计各 AI UA 的实际抓取频率,判断哪些真正带来引用流量(可结合 Referer 中的 chat.openai.com、perplexity.ai、claude.ai 反查)。
分区域设置权限,而不是”一刀切”:核心变现内容屏蔽训练类爬虫,营销落地页/博客放行以博取 GEO 曝光。
robots.txt + WAF 双层部署:robots.txt 解决”愿意遵守规则”的正规厂商,WAF/CDN 层解决”不遵守规则”的抓取行为。
定期复核 UA 列表:AI 厂商的爬虫命名和用途每隔几个月就可能新增或拆分(如 OpenAI 已把训练与问答抓取拆成不同 UA),需要建立季度巡检机制。
常见问题快速解答
取决于Googlebot下次来访你网站的时间,通常是几小时到几天。
如果改动比较紧急,可以在Google Search Console里手动请求重新抓取robots.txt,会快一些。
返回404的话,爬虫通常会假定整个网站都可以抓取,不会因为找不到robots.txt就停止工作。
但如果是500服务器错误,有些爬虫可能会暂时停止抓取,直到能成功访问为止。
直接影响没有,但间接影响很大。
配置错了,重要页面没被抓到,排名当然起不来。
配置好了,抓取预算用在核心页面上,新内容收录更快,排名效果也更好。
是的,子域名是独立的,需要各自在根目录下放自己的robots.txt文件。
比如blog.xiaoweiboke.com 和 xiaoweiboek.com 都需要单独配置,不会共用主域名下的文件。

