Robots.txt:控制Googlebot的抓取、屏蔽目录、抓取速率指令,以及SEO最佳实践。

Robots.txt是一个简单却强大的文件,它控制搜索引擎如何抓取您的网站。它位于`https://example.com/robots.txt`,其中包含规定Google、Bing和其他机器人可以抓取哪些页面和目录的规则。Robots.txt帮助您管理抓取预算(Google每天抓取的页面数量),避免把抓取浪费在不重要的页面上,并让私密内容不出现在搜索结果中。
大多数网站都有robots.txt文件,但很多都配置有误。配置错误的robots.txt可能会意外屏蔽重要页面,白白浪费排名潜力。配置得当的robots.txt能提升抓取效率,并保护您站点的隐私。本指南涵盖robots.txt的语法、最佳实践和实际案例。
Robots.txt是一个标准化的文本文件,用来向搜索引擎机器人传达抓取指令。当一个机器人首次访问您的站点时,它会在抓取任何其他内容之前先请求`/robots.txt`。机器人读取这些规则并遵守它们(前提是这个机器人守规矩)。
Google的robots.txt文档是这一标准的权威参考。robots.txt格式诞生于1994年,此后被广泛采用。所有主流搜索引擎(Google、Bing、百度)都遵守robots.txt。
重要提示:Robots.txt是一份指引,而不是一道防火墙。守规矩的机器人(Google、Bing)会遵守robots.txt的规则。恶意机器人和采集程序则无视robots.txt。请把robots.txt用来管理搜索引擎的抓取,而不是用来拦截黑客或采集程序。安全方面请使用服务器层面的工具。
Robots.txt使用简单的文本语法。每条规则由两部分组成:一个User-agent(这条规则适用于哪个机器人)和若干Disallow路径(要屏蔽哪些页面)。
基本示例:
User-agent: *
Disallow: /admin/
Disallow: /staging/
Sitemap: https://example.com/sitemap.xml
这告诉所有机器人(`*`表示全部)不要抓取`/admin/`和`/staging/`目录。Sitemap那一行告诉机器人您的站点地图位于何处。
User-agent: \*表示所有机器人。您也可以指定单个机器人:
`User-agent: Googlebot`只适用于Google的机器人。`User-agent: Bingbot`只适用于Bing的机器人。您可以设置多个User-agent区块,各自带不同的规则。
Disallow: /path/告诉机器人不要抓取那个路径。Disallow: /会屏蔽整个站点。Disallow: 留空则允许一切。每个User-agent下可以列出多条Disallow规则。
Allow: /path/允许抓取某个特定路径,即便它的上级目录被禁止了。例如:Disallow: /temp/ 加上 Allow: /temp/important/,就只允许抓取 /important/ 这个子目录。
写法1:屏蔽后台管理页面
User-agent: *
Disallow: /admin/
Disallow: /user/
Disallow: /account/
这会阻止管理页、用户页和账户页被抓取。这些页面通常并不是给搜索引擎看的。
写法2:屏蔽预发布环境
User-agent: *
Disallow: /staging/
Disallow: /test/
阻止机器人抓取您站点的测试版或预发布版。
写法3:屏蔽特定文件类型
User-agent: *
Disallow: /*.pdf
Disallow: /*.zip
阻止机器人抓取PDF和ZIP文件。如果您有很多不该被收录的PDF,这会很有用。
写法4:给猛冲服务器的机器人降速
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Crawl-delay: 10
完全屏蔽Ahrefs的机器人(如果您不希望自己的站点被SEO工具抓取)。通过在请求之间加入10秒延迟,给Semrush的机器人降速。对于那些把您服务器压垮的激进机器人,Crawl-delay很有用。
写法5:允许全部(默认)
User-agent: *
Disallow:
这是默认状态。Disallow留空意味着全部允许。如果您希望所有内容都可被抓取,也可以干脆不放robots.txt。
Robots.txt阻止抓取。meta robots noindex阻止收录。两者用途不同。
在以下情况使用robots.txt:您想节省抓取预算。您有不该被抓取的重复内容。您有不该被机器人碰到的后台管理页面。您想给激进的机器人降速。
在以下情况使用meta robots noindex:您希望某个页面被抓取但不被收录(以便看到错误和问题)。您想阻止收录,但仍允许内部链接和抓取。您想最终把某个页面从搜索中移除,但保持它在线。
举例:`/products?page=2`这类分页页面可以在robots.txt中屏蔽,以节省抓取预算(因为Google通常会把分页合并处理)。但您也可能希望它们被抓取,以便识别规范化关系。那种情况下,请使用规范标签,而不是robots.txt。
抓取预算是Google每天在您站点上抓取的网址数量。拥有数百万页面的大型站点,不可能每天把所有页面都抓一遍。Google会根据您站点的权威度和更新频率来分配抓取预算。抓取预算是有限的。把它浪费在不重要的页面上,就意味着重要页面被抓取的频率变低。
通过屏蔽那些不该被抓取的页面来优化抓取预算:重复内容、分页的搜索结果、用户账户页、测试页。您每屏蔽一个页面,就等于给Google留出更多预算去抓取您的重要内容。
常见的抓取预算浪费源:无限分页(商品筛选会生成无穷无尽的网址)、带不同参数的重复内容、附加在每个网址上的会话标识、不断生成新网址的日历与活动页面。请用robots.txt屏蔽这些模式。
Google Search Console会显示您站点的抓取统计数据。请每天关注抓取请求。如果Google反复抓取同样的页面却没有发现新内容,请检查您的robots.txt和屏蔽策略。
请把您的站点地图网址写进robots.txt。在robots.txt文件末尾加上`Sitemap: https://example.com/sitemap.xml`。这会告诉Google在哪里找到您的XML站点地图。如果您有多个文件,可以列出多个站点地图。
示例:
User-agent: *
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-news.xml
在robots.txt中列出站点地图是可选的(您也可以通过Google Search Console提交站点地图),但这是一项最佳实践。
Google Search Console提供了robots.txt测试工具。前往 Settings > Crawling > Test robots.txt。输入一个网址,看看robots.txt是否屏蔽了它。在部署之前验证规则时,这一步价值极高。
在部署robots.txt改动之前,请务必先测试。一个失误(比如用`Disallow: /`屏蔽了您的整个站点)就可能让排名崩塌。请用测试工具确认:
重要页面没有被屏蔽。后台管理页面已被屏蔽。重复内容的模式已被屏蔽。没有关键路径被误禁。
部署robots.txt之后,请关注Google Search Console抓取报告的变化。如果抓取速率意外下降,您可能误屏蔽了重要内容。
错误1:屏蔽CSS和JavaScript。如果您在robots.txt中屏蔽了`/css/`或`/js/`,Google就无法抓取您的CSS和JavaScript。没有CSS,Google就无法正确渲染您的页面。不要屏蔽CSS或JavaScript。
错误2:屏蔽了重要内容。部署前请务必测试。一个笔误,比如把`Disallow: /staging/`写成了`Disallow: /p`,就可能无意中屏蔽掉`/products/`。
错误3:把robots.txt当作安全手段。不要指望robots.txt来保护敏感数据。涉及安全的页面应当要求身份验证,而不是只靠robots.txt。Robots.txt是公开的,很容易被绕过。
错误4:各域名之间的robots.txt不一致。如果您有多个域名,请保持robots.txt策略一致。不经意的规则差异会造成抓取效率问题。
错误5:把站点地图本身屏蔽了。绝不要在robots.txt中屏蔽`/sitemap.xml`。Google需要抓取站点地图才能发现页面。
Crawl-delay与Request-rate:这些指令用来给机器人降速。`Crawl-delay: 10`会在请求之间加入10秒间隔。`Request-rate: 1/10`表示每10秒允许1次请求。请把它们用在那些把您服务器压垮的机器人上。Google建议改用Search Console的设置,而不是这些指令。
Allow指令:即便上级路径被禁止,也允许抓取某个特定路径。适合用来开个例外口子。例如:`Disallow: /temp/`加上`Allow: /temp/keep/`,就只允许抓取keep这个子目录。
Google的robots.txt规范记录了所有受支持的指令。大多数功能都很少用得上。对绝大多数站点来说,用好基本的User-agent、Disallow和Sitemap就够了。
针对特定User-agent的规则,让不同机器人适用不同的抓取规则。您可以分别为Googlebot、Bingbot和其他User-agent指定规则。如果您希望Google抓取整个站点,同时限制Bing访问某些板块,这就很有用。请在每个规则块的开头指定User-agent:
`User-agent: Googlebot`只把规则应用于Google的爬虫。`User-agent: *`把规则应用于所有机器人。规则一直对该User-agent生效,直到出现下一条User-agent指令为止。您可以为不同的机器人创建多个规则块。
Crawl-delay和Request-rate指令告诉机器人该以多高的频率抓取。`Crawl-delay: 5`告诉机器人在两次请求之间等待5秒。这能减轻服务器负载。`Request-rate: 1/10`告诉机器人每10秒最多发起1次请求。Google的robots.txt文档详细说明了所有受支持的指令。
Sitemap位置指令告诉机器人在哪里找到您的站点地图。`Sitemap: https://example.com/sitemap.xml`把机器人指向您的XML站点地图。您可以指定多个站点地图。推荐这么做,因为它能帮机器人高效地发现您的全部页面。
Clean-param指令会在抓取前去掉网址参数。`Clean-param: utm_source&utm_medium https://example.com`告诉Google忽略example.com上的UTM参数。这可以避免Google把带跟踪参数的链接当成重复内容。如今这条指令用得较少,因为Google已经能自动处理大多数跟踪参数。
请在Google Search Console的robots.txt测试工具中测试您的robots.txt文件。该工具会显示对Googlebot而言,您的robots.txt会屏蔽哪些网址。这能避免误屏蔽重要页面。
Robots.txt是一个简单却关键的文件,用于管理搜索引擎的抓取并保护您站点的隐私。配置得当的robots.txt会屏蔽不重要的页面、节省抓取预算,并避免重复内容被反复抓取。配置错误的robots.txt则可能误屏蔽重要内容,让您的排名崩塌。
部署前请务必测试robots.txt的改动。用Google Search Console的测试工具验证规则。每月关注您的抓取统计数据。屏蔽不重要的内容,把抓取预算管好。请使用我们的GEO SEO审计工具,来审查您的robots.txt配置,并找出整个站点在可抓取性和收录方面的潜在问题。
来源
不能。在robots.txt中屏蔽一个页面会阻止Google抓取它,但对SEO没有帮助。如果您不希望某个页面被收录,请改用noindex标签。robots.txt的用途是节省抓取预算。
不应该。绝不要在robots.txt中屏蔽CSS或JavaScript。Google需要访问这些资源,才能完整理解您的页面。屏蔽它们会让Google无法正确渲染您的内容。
一般来说,除非Google发起的请求太多,否则您不需要设置抓取速率。如果Google正在耗尽您的带宽,请使用Crawl-delay指令。大多数站点都能承受Google的默认抓取速率。
他们已先于您体验了 SORANK

