SEO指南 2026-09-18 21 约 12 分钟

Robots.txt:如何让搜索引擎不要抓取没用的页面

网站内容越来越多以后,SEO经常会遇到一个问题:

搜索蜘蛛每天抓了很多URL,但真正重要的产品页、服务页和文章反而抓得不多。

尤其是WordPress、商城、筛选系统或者内容量比较大的网站,很容易产生:

站内搜索结果。

后台地址。

登录页面。

购物车。

参数URL。

筛选URL。

排序页面。

测试目录。

重复打印页。

一些没有搜索价值的功能页面。

这时候很多人会想到:

能不能通过robots.txt告诉百度、Google,这些页面不用抓,把抓取资源留给真正重要的内容?

可以。

这正是robots.txt最典型的用途之一。

但必须先理解一个非常重要的区别:

robots.txt控制的是“搜索蜘蛛能不能抓取这个URL”,并不等于“这个URL一定不会出现在搜索结果”。

Google当前官方文档已经明确提醒,如果一个页面被robots.txt禁止抓取,但其他网站或者页面仍然链接到这个URL,Google仍然可能知道这个地址,并把URL显示在搜索结果中,只是无法抓取正文生成完整摘要。真正想阻止页面进入Google索引,更适合使用noindex或者访问权限控制。

所以robots.txt真正适合解决的是:

抓取管理。

理解这一点以后,再设置就不容易出错。

第一:Robots.txt到底是什么?

robots.txt是一个放在网站根目录下的纯文本文件。

例如网站:

https://www.example.com/

对应的robots文件通常是:

https://www.example.com/robots.txt

搜索蜘蛛访问网站时,会先读取这个文件,再根据里面的规则判断:

哪些目录可以抓。

哪些URL不应该抓。

Google目前对robots协议的说明明确指出,robots.txt中的规则只对该文件所在的主机、协议和端口生效;文件应该放在网站顶级目录,并使用UTF-8纯文本格式。

百度搜索资源平台当前对robots.txt的定义也类似:

网站可以通过robots文件声明不希望搜索引擎抓取的部分,并通过百度Robots工具创建、校验和查看规则是否生效。

所以可以把它理解成:

网站给搜索蜘蛛准备的一份抓取说明书。

第二:最基础的Robots.txt怎么写?

最常见结构是:

User-agent: *
Disallow:

其中:

User-agent: *

表示规则针对所有遵守robots协议的搜索蜘蛛。

而:

Disallow:

后面为空,表示没有禁止目录。

也就是:

允许抓取整个网站。

如果希望禁止抓取某一个目录,比如:

/private/

可以写:

User-agent: *
Disallow: /private/

这样搜索蜘蛛就会被告知:

不要抓取/private/目录下的URL。

如果希望禁止多个目录,则逐行写:

User-agent: *
Disallow: /private/
Disallow: /temp/
Disallow: /test/

百度当前robots工具手册也明确支持User-agentDisallowAllow以及*$等匹配方式。

第三:千万不要误写成“禁止整个网站”

robots.txt里最危险的一条规则就是:

User-agent: *
Disallow: /

这句话的意思不是:

禁止抓取首页。

而是:

禁止所有搜索蜘蛛抓取整个网站。

新站测试环境经常会使用这一规则,避免测试网站被收录。

真正危险的是:

开发完成以后正式上线,却忘记删除。

百度过去就专门提醒过,很多网站流量突然下降,最终排查发现是技术人员误用robots封禁了搜索蜘蛛。

所以网站上线、主题更新、服务器迁移以后,都建议第一时间访问:

https://你的域名/robots.txt

确认有没有:

Disallow: /

这种全站封禁规则。

第四:哪些“没用页面”比较适合用Robots限制抓取?

这里一定不要直接照抄别人robots.txt。

不同网站结构完全不同。

真正适合考虑限制抓取的,通常是:

没有独立搜索价值,而且会大量产生URL的功能页面。

比如某些站点的:

站内搜索。

测试目录。

临时目录。

内部接口页面。

没有搜索价值的后台入口。

部分重复参数URL。

例如站内搜索可能生成:

/search/?q=SEO
/search/?q=GEO
/search/?q=WordPress
/search/?q=AI

如果用户可以组合出几万个搜索结果页面,搜索蜘蛛不断抓这些URL,就可能造成大量无效抓取。

这时候如果业务确认这些页面完全不需要进入搜索,可以考虑:

User-agent: *
Disallow: /search/

但一定要先确认真实URL规则。

不要只看到:

别人屏蔽/search/

就直接复制。

第五:WordPress网站哪些目录常见但不能乱封?

WordPress经常会看到类似robots设置:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

这种逻辑比较常见:

后台管理目录不需要搜索蜘蛛大量抓取。

但某些前端功能可能依赖:

admin-ajax.php

因此单独允许。

不过不要为了所谓“节省抓取预算”,直接写:

Disallow: /wp-content/

或者:

Disallow: /wp-includes/

因为里面可能包含页面正常渲染所需的:

CSS。

JavaScript。

图片。

其他静态资源。

Google当前明确提醒,如果被robots阻止的资源会影响页面正常渲染和理解,就不应该屏蔽这些资源,否则Google可能无法正确分析页面。

所以WordPress robots优化真正应该针对:

无价值URL。

而不是看到系统目录就全部封掉。

第六:动态参数URL要不要全部Disallow?

很多网站会产生:

/product/?sort=price
/product/?color=blue
/article/?page=2
/?utm_source=wechat

这时候一些教程会直接建议:

Disallow: /*?*

意思是:

禁止抓取所有带问号参数的URL。

百度官方历史robots示例确实展示过类似通配符写法。

但是实际网站千万不要机械照搬。

因为有些网站真正重要的页面本身也依赖参数。

例如:

/product?id=123

可能就是唯一的产品详情地址。

如果直接:

Disallow: /*?*

等于把这些产品页面一起封掉。

所以参数治理第一步应该先分类:

参数URL
↓
是独立有价值内容?
还是重复筛选/追踪参数?

只有确定没有搜索价值,再考虑限制抓取。

第七:Robots.txt不能代替Canonical

比如页面:

/product/

和:

/product/?utm_source=wechat

内容完全一样。

有些人第一反应是:

把所有参数URL全部robots禁止。

但如果真正的问题是:

一个内容存在多个URL版本。

更应该首先考虑:

Canonical。

内部链接统一。

Sitemap统一。

参数治理。

因为robots.txt只能告诉搜索蜘蛛:

不要抓这个地址。

它不能直接完成:

A和B其实属于同一个页面,应该把所有搜索信号统一到A。

这是Canonical更擅长解决的问题。

所以可以简单理解:

Robots.txt
解决抓取控制

Canonical
解决重复页面规范化

不要混在一起。

第八:Robots.txt也不能代替Noindex

这个区别尤其重要。

假设网站有一个页面:

/member/

你明确不希望它出现在Google搜索结果。

如果只写:

User-agent: *
Disallow: /member/

Google无法抓这个页面。

但如果互联网其他位置已经存在这个URL的链接,Google仍然可能知道这个URL存在,并可能仅以URL形式展示。

Google官方对此说明得非常清楚:

robots.txt并不是阻止网页进入Google索引的可靠方法。

如果真正不希望页面出现在Google搜索里,应该使用:

<meta name="robots" content="noindex">

或者HTTP:

X-Robots-Tag: noindex

又或者对隐私内容进行登录和密码保护。

所以这里一定要区分目标。

目标是:

不想搜索蜘蛛浪费时间抓取。

考虑robots.txt。

目标是:

不想页面出现在搜索结果。

考虑noindex或访问权限控制。

第九:不要同时Robots封禁,又要求搜索引擎读取Noindex

这是一个特别典型的SEO错误。

比如页面代码有:

<meta name="robots" content="noindex">

同时robots.txt又写:

User-agent: *
Disallow: /private-page/

你真正的目的可能是:

希望搜索引擎抓到noindex,然后删除页面。

结果却是:

搜索蜘蛛被robots拦在门外,根本看不到页面里的noindex。

Google当前明确说明:

为了让noindex生效,页面必须允许Googlebot抓取。

如果页面被robots.txt禁止访问,Google就无法读取noindex规则,URL仍可能继续出现在搜索结果里。

所以如果一个已经被索引的页面准备移出Google:

不要马上robots封掉。

应该先让搜索蜘蛛能够访问:

noindex

待搜索系统重新处理。

这是非常重要的区别。

第十:隐私页面更不能只靠Robots.txt

比如:

内部管理系统。

客户资料。

未公开报价。

测试环境。

私人文件。

如果内容真正敏感,不能指望:

Disallow: /secret/

保护隐私。

因为robots.txt本身就是公开文件。

任何人打开:

example.com/robots.txt

都可以看到你写了:

Disallow: /secret/

反而等于告诉别人:

这里存在一个secret目录。

所以隐私内容应该使用:

登录验证。

密码保护。

访问权限。

IP限制。

而不是把robots.txt当成安全系统。

Google官方同样建议,如果内容属于私密信息,应当使用密码保护等方式限制访问。

第十一:Robots.txt可以针对不同搜索蜘蛛单独设置

例如希望对所有蜘蛛开放:

User-agent: *
Disallow:

也可以专门针对Googlebot:

User-agent: Googlebot
Disallow: /test/

或者针对Baiduspider:

User-agent: Baiduspider
Disallow: /test/

百度官方目前仍然提供不同Baiduspider类型说明,并支持针对Baiduspider设置不同抓取规则。

不过普通企业网站没有必要把robots配置写得特别复杂。

如果并不存在:

Google允许、百度禁止。

这种明确业务需求,使用统一规则通常更容易维护。

规则越复杂,未来技术人员越容易误改。

第十二:Allow什么时候有用?

比如你已经禁止整个目录:

User-agent: *
Disallow: /folder/

但是其中有一个页面希望继续允许:

/folder/important.html

可以写:

User-agent: *
Disallow: /folder/
Allow: /folder/important.html

意思就是:

整个folder目录禁止。

但important.html例外。

Google当前robots规范支持:

User-agent
Allow
Disallow
Sitemap

并在规则冲突时按照匹配路径的具体程度处理。

百度同样支持Allow规则和通配符匹配。

不过规则越复杂,越应该先用官方工具测试。

第十三:Robots.txt里可以放Sitemap

例如:

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

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

Google明确支持:

Sitemap:

字段,而且要求填写完整绝对URL。

这也是非常常见的robots配置方式。

搜索蜘蛛访问:

/robots.txt

以后,就可以同时知道:

哪些URL不应该抓。

以及:

站点地图在哪里。

对于多Sitemap网站也可以写多行:

Sitemap: https://example.com/post-sitemap.xml
Sitemap: https://example.com/page-sitemap.xml

第十四:Robots.txt设置以后,怎么检查有没有写错?

百度搜索资源平台目前提供专门的:

Robots工具。

可以:

创建robots规则。

检测现有文件。

校验规则。

查看百度当前生效的robots内容。

检查指定URL是否被封禁。

如果修改以后百度仍然显示旧版本,还可以通过工具提交更新。

所以百度SEO网站修改robots以后,不要只说:

文件已经上传,应该生效了。

可以直接进入搜索资源平台测试。

Google方面也可以结合:

Search Console URL Inspection。

抓取测试。

服务器日志。

确认目标页面是否被robots阻止。

第十五:为什么修改Robots.txt以后搜索蜘蛛没有马上变化?

因为搜索引擎可能会缓存robots.txt。

Google当前官方说明:

通常会把robots.txt内容缓存最多约24小时。

如果新的robots文件无法正常获取,例如出现超时或者5xx,缓存时间还可能延长。

所以:

上午修改robots。

下午日志里偶尔还有旧行为。

不一定说明配置失效。

更重要的是:

robots文件自己必须稳定返回。

如果搜索蜘蛛访问:

/robots.txt

持续遇到服务器错误,反而会造成新的抓取问题。

第十六:robots.txt自己也不能返回奇怪状态

正常robots.txt最好:

可以公开访问。

返回200。

内容是纯文本。

例如:

https://example.com/robots.txt

直接打开即可。

Google当前要求robots.txt是UTF-8编码的纯文本文件,并且只解析有效robots规则。

不要出现:

robots.txt访问以后跳登录。

返回网站404模板。

返回一段HTML首页。

服务器5xx。

这些问题都会增加搜索蜘蛛判断难度。

第十七:哪些页面通常不建议用Robots禁止?

这一点特别重要。

核心文章

当然需要抓。

产品和服务页

需要参与搜索。

CSS和JS等重要渲染资源

如果屏蔽以后搜索蜘蛛无法正常理解页面,不应该封。Google已经明确提醒这一点。

已经设置Noindex、希望搜索引擎重新抓取并移除的页面

也不能同时先robots封死,否则搜索引擎看不到noindex。

Canonical目标页面

既然它是规范版本,就应该正常抓取。

所以robots真正应该控制的是:

明确无搜索价值、又会消耗大量无效抓取的URL。

而不是:

看不懂的目录全部封掉。

第十八:WordPress可以怎么规划Robots.txt?

假设一个普通企业WordPress网站。

核心页面包括:

首页。

服务。

产品。

案例。

文章。

这些全部应该正常抓取。

另外可能存在:

后台。

站内搜索。

一些测试目录。

那么可以根据真实情况设计类似:

User-agent: *

Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Disallow: /search/
Disallow: /test/

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

注意:

这只是一个结构示例。

不要直接复制到所有WordPress网站。

例如有些站内搜索URL并不是:

/search/

而是:

/?s=keyword

有些网站根本没有测试目录。

所以真正写robots以前,应该先用爬虫或者服务器日志梳理:

到底有哪些无价值URL正在被搜索蜘蛛大量访问。

再针对性处理。

第十九:大型网站为什么更值得做Robots治理?

如果网站只有30个页面。

robots优化通常不是最优先的SEO工作。

因为搜索蜘蛛抓几十个URL没有太大压力。

但如果网站有:

10万产品。

筛选组合生成100万URL。

各种排序参数再生成更多地址。

这时候抓取管理就很重要。

Google当前也明确表示,对于拥有几十万甚至更多URL的大型网站,如果存在大量重复或低价值页面,可以考虑限制部分不重要页面的抓取,让系统更集中处理重要内容。

所以robots治理真正体现价值的场景通常是:

URL规模已经明显膨胀。

如果一个企业官网只有50页,却花几天研究复杂robots规则,投入产出未必高。

第二十:Robots.txt不是解决URL膨胀的唯一方法

如果网站每天产生几万个垃圾参数URL。

最好的方案也不一定只是:

Disallow

更应该继续追查:

为什么这些URL会产生?

是不是可以直接停止生成?

是不是站内存在大量无意义链接?

是不是筛选系统可以调整?

是不是需要Canonical?

是不是应该返回404?

因为即使robots禁止抓取,这些URL仍然存在。

如果网站自身不断创造新的无价值URL,搜索蜘蛛还是可能持续发现这些地址。

所以更完整的URL治理逻辑应该是:

停止制造无效URL
↓
统一内部链接
↓
处理重复页面
↓
设置Canonical
↓
必要时Robots限制抓取
↓
清理Sitemap

robots只是其中一层。

第二十一:设置Robots前,可以先做一张页面分类表

对于几百、上千URL的网站,我更建议先分类。

页面类型 是否需要抓取 是否需要索引
首页
产品页
服务页
文章页
案例页
站内搜索页 通常否 通常否
后台页面 通常否
用户私人页面
重复筛选页 视情况 视情况
跟踪参数URL 通常没必要单独抓 不应作为独立规范页

这样会发现:

是否抓取。

和:

是否索引。

本来就是两列。

这正是robots.txt和noindex不能混为一谈的原因。

第二十二:网站SEO最常见的Robots错误,可以直接检查这6项

1. 正式站误写

Disallow: /

导致整站封禁。

2. 为了Noindex页面直接Robots封禁

搜索蜘蛛因此看不到noindex。

3. 把CSS、JS重要资源封掉

影响搜索引擎渲染页面。

4. 参数规则写得太宽

例如:

Disallow: /*?*

误伤真正需要索引的动态页面。

5. 测试环境规则带到正式站

改版上线时非常常见。

6. 抄别人的Robots.txt

网站URL结构完全不同,却直接复制。

这些问题造成的影响,通常比所谓“抓取预算优化”严重得多。

Robots.txt到底应该怎么让搜索引擎少抓没用的页面?

最后可以把整个过程压缩成这几步。

第一步:先找出搜索蜘蛛正在抓什么。

通过:

服务器日志。

百度抓取数据。

Search Console。

网站Crawler。

找出大量无搜索价值URL。

第二步:给URL分类。

哪些真正需要搜索。

哪些只是功能页面。

哪些属于重复参数。

第三步:先治理URL产生机制。

能不生成的垃圾URL,最好直接不生成。

第四步:对确定无抓取价值的路径使用Robots。

例如:

User-agent: *
Disallow: /确定无价值的目录/

第五步:不要把Robots和Noindex、Canonical混淆。

抓取控制、索引控制、重复规范化分别解决。

第六步:修改以后测试规则。

百度可以通过当前Robots工具创建、校验、更新规则并查看实际生效情况。

所以robots.txt真正正确的使用思路并不是:

我不想搜索结果出现这个页面,所以把它Disallow。

更准确的理解应该是:

这些URL没有必要让搜索蜘蛛反复访问,我要通过robots管理抓取范围。

真正不想进入搜索结果,要考虑noindex。

真正重复的URL,要考虑Canonical和URL规范化。

真正私密的页面,要使用登录和访问权限。

robots.txt只是其中一项工具。

但对于拥有大量参数页、搜索页、重复功能页的网站来说,它确实是技术SEO中非常重要的一项抓取治理能力。

真正好的Robots配置,不是禁止得越多越好,而是让搜索蜘蛛把更多访问机会留给网站真正值得抓取的内容。

标签:

悦增长

评论

欢迎留下你的看法,评论会按站点设置审核展示。

0 条评论

还没有评论,来写下第一条吧。

评论已关闭

猜你喜欢