SEO Robots.txt 终极指南
Robots.txt 是你可以创建的文件,用于控制网站的抓取。
这是机器人排除协议的实际实施,该协议的创建是为了防止网络爬虫用过多的请求压倒网站。
如果抓取程序访问其整个 URI 空间,则服务所有者可能会感到不便。本文档指定了爬虫在访问 URI 时应遵守的最初由“机器人排除协议”定义的规则。即使你的网站没有必要使用 robots.txt,拥有一个也可以通过优化搜索引擎机器人抓取你网站的方式对你的业务产生积极影响。 根据 2021 年网络年鉴,~16,5% 的网站根本没有 robots.txt 文件。此外,并非每个人都正确实施它。
网站可能错误地配置了 robots.txt 文件。例如,一些流行的网站(可能错误地)阻止了搜索引擎。Google 可能会将这些网站编入索引一段时间,但最终它们在搜索结果中的可见度会降低。根据你网站的大小,不当使用 robots.txt 可能是一个小错误或代价高昂的错误。 本文将向您展示如何创建 robots.txt 文件并避免潜在错误。
文章目录
什么是 robots.txt?
Robots.txt 是一个简单的文本文件,你可以将其放置在服务器上以控制机器人访问你的页面的方式。它包含爬虫规则,用于定义应该或不应该爬取哪些页面。
该文件应位于你网站的根目录中。 因此,例如,如果你的网站名为 domain.com,则 robots.txt 文件应位于 domain.com/robots.txt。
但是该文件是如何工作的呢?机器人如何发现它?
抓取程序是抓取 Web 的程序。它们有多种用途,但搜索引擎使用它们来查找要索引的 Web 内容。此过程可分为几个步骤:
- 爬虫有一个 URL 队列,其中包含他们想要爬取的新网站和以前已知的网站。
- 在抓取网站之前,爬网程序首先在网站的根目录中查找 robots.txt 文件。
- 如果不存在 robots.txt 文件,爬虫将继续自由抓取网站。但是,如果存在有效的 robots.txt 文件,抓取程序会在其中查找指令并继续相应地抓取网站。
1. 被阻止抓取的页面可能仍会被编入索引
禁止在 robots.txt 文件中进行爬网并不能保证搜索引擎不会为该页面编制索引。如果他们在其他来源中找到有关内容的信息并认为这是一个重要的内容,他们可能仍然会这样做。例如,他们可以从其他网站找到指向该页面的链接,使用锚文本并将其显示在搜索结果页面上。
2. 你不能强迫机器人遵守robots.txt规则
Robots.txt只是一个指导方针,而不是强制性规则。你不能强迫机器人服从它。大多数爬虫,尤其是搜索引擎使用的爬虫,不会爬取任何被 robots.txt 阻止的页面。但是,搜索引擎并不是唯一使用爬虫的搜索引擎。恶意机器人可能会忽略这些说明并仍然访问这些页面。这就是为什么你不应该使用 robots.txt 作为保护网站上敏感数据不被抓取的一种方式。 如果你需要确保机器人不会抓取您的某些内容,最好使用密码保护它。
为什么需要 robots.txt 文件?
Robots.txt 不是网站的强制性部分,但经过充分优化的它可以在很多方面使你的网站受益。
最重要的是,它可以帮助你优化抓取预算。搜索引擎机器人的资源有限,限制了它们可以在给定网站上抓取的 URL 数量。因此,如果你将抓取预算浪费在不太重要的页面上,那么可能没有足够的资源来存储更有价值的页面。如果你有一个小型网站,这似乎是一个肤浅的问题,但任何维护大型网站的人都知道有效使用搜索引擎机器人的资源是多么重要。 使用 robots.txt 文件,你可以防止某些页面(例如低质量页面)被抓取。这很关键,因为如果你有许多可索引的低质量页面,它可能会影响整个网站并阻止搜索引擎机器人抓取高质量的页面。
此外,robots.txt 还允许你指定 XML 站点地图的位置。 站点地图是一个文本文件,列出了你希望搜索引擎索引的 URL。在 robots.txt 文件中定义其链接可使搜索引擎机器人更容易找到它。
如何修改 robots.txt 文件
如何修改 robots.txt 文件在很大程度上取决于你使用的系统。
如果你使用的是 CMS 或电子商务平台,你可能可以使用专用工具或插件来帮助你轻松访问和修改文件。例如,Wix 和 Shopify 允许直接编辑robots.txt。对于 WordPress,你可以使用 Yoast SEO 等插件。
如果不使用 CMS 或电子商务平台,则可能需要先下载文件,对其进行编辑,然后将其上传回你的网站。
可以通过多种方式下载文件:
- 通过将 “/robots.txt” 添加到根目录,然后简单地复制内容,在浏览器中显示文件。
- 使用你的托管服务提供的工具。例如,它可能是一个用于管理文件或通过 FTP 协议访问的专用面板。
- 使用 cURL 等控制台工具通过键入以下命令下载文件:
curl https://example.com/robots.txt -o robots.txt
- 使用 Google 或 Bing 的 robots.txt 测试人员下载文件的副本。
在自动抓取过程中,Google 的爬虫会注意到您对 robots.txt 文件所做的更改,并每 24 小时更新一次缓存版本。如果您需要更快地更新缓存,请使用 robots.txt Tester 的 Submit 功能。——来源:谷歌
Robots.txt 语法
Robots.txt 由文本块组成。每个块都以 User-agent 字符串和 groups 特定机器人的指令(规则)开头。
下面是 robots.txt 文件的示例:
User-agent: *
Disallow: /admin/
Disallow: /users/
#specific instructions for Googlebot
User-agent: Googlebot
Allow: /wp-admin/
Disallow: /users/
#specific instructions for Bingbot
User-agent: Bingbot
Disallow: /admin/
Disallow: /users/
Disallow:/not-for-Bingbot/
Crawl-delay: 10
Sitemap: https://www.example.com/sitemap.xml
User-agent 用户代理
有数百名爬虫可能想要访问你的网站。这就是为什么你可能希望根据他们的意图为他们定义不同的边界。这是 User-agent 可能派上用场的时候。
User-agent 是标识特定机器人的一串文本。因此,例如,Google 使用 Googlebot,Bing 使用 Bingbot,DuckDuckGo 使用 DuckDuckBot,Yahoo 使用 Slurp。搜索引擎也可以有多个用户代理。在这里,您可以找到 Google 和 Bing 使用的用户代理的完整列表。
User-agent 是每组指令中的必填行。你可以将其视为通过机器人的名称调用 bot,并为每个机器人提供特定的指令。User-agent 之后的所有指令都将针对定义的 bot,直到指定了新的 User-agent。
还可以使用通配符并同时向所有 bot 提供指令。我稍后将介绍通配符。
Directives 指令
指令是你为搜索引擎机器人定义的规则。每个文本块可以有一个或多个指令。每个指令都需要在单独的行中开始。
这些指令包括:
- Disallow 禁止
- Allow 允许
- Sitemap 网站地图
- Crawl-delay 爬行延迟
Disallow 禁止
User-agent: Googlebot
Disallow: /users/
此指令指定不应抓取哪些页面。默认情况下,搜索引擎机器人可以抓取未被 disallow 指令阻止的每个页面。
要阻止对特定页面的访问,需要定义其相对于根目录的路径。
假设你的网站上有这两个URL:
可以通过按以下方式添加“/”符号来禁止抓取整个网站:
- website.com/products/shoes/item1
- website.com/products/shirts/item2
Path 路径 | Blocked 封锁 |
---|---|
Disallow: /item1.html | Only the /products/shoes/item1.html is disallowed |
Disallow: /products/ | Both /products/shoes/item1.html and /products/shirts/item2.html are disallowed |
User-agent: Googlebot
Disallow: /
Allow 允许
User-agent: Googlebot
Disallow: /users/
Allow: /users/very-important-user.html
可以使用 allow 指令来允许爬取其他不允许的目录中的页面。
在上面的示例中,/user/ 目录中的所有页面都被禁止使用,但名为 /very-important-user.html 的页面除外。
Sitemap 网站地图
Sitemap: https://website.com/sitemap.xml
sitemap 指令指定站点地图的位置。可以将其添加到文件的开头或结尾,并定义多个站点地图。
与其他指令中定义的路径不同,**请始终添加站点地图的完整 URL,**包括 HTTP/HTTPS 协议或 www/non-www 版本。
sitemap 指令不是必需的,但强烈推荐。即使你在 Google Search Console 或 Bing Webmaster Tools 中提交了站点地图,将其添加到你的 robots.txt 文件中以帮助所有搜索引擎机器人更快地找到它始终是一个好主意。
Crawl-delay 爬网延迟
Crawl-delay: 10
搜索引擎机器人可以在短时间内抓取你的许多页面。每次抓取都会使用服务器资源的一部分。
如果你有一个有很多页面的大型网站,或者打开每个页面需要大量的服务器资源,你的服务器可能无法处理所有请求。结果,它会变得超载,用户和搜索引擎都可能会暂时失去对你网站的访问权限。这就是 Crawl-delay 指令可能派上用场并减慢抓取过程的地方。
Crawl-delay 指令的值以秒为单位定义。可以将其设置在 1-30 秒之间。
请务必注意,并非每个搜索引擎都遵循此指令。例如, Google 根本不支持 Crawl-delay。
此外,对它的解释可能因搜索引擎而异。例如,对于 Bing 和 Yahoo,Crawl-delay 表示机器人只能访问页面一次的窗口间隙的长度。
对于 Yandex,Crawl-delay 指定机器人在请求另一个页面之前需要等待的时间。
robots.txt 中的评论
#Blocks access to the blog section
User-agent: Googlebot
Disallow: /blog/
User-agent: Bingbot
Disallow: /users/ #blocks access to users section
可以通过在行首或指令后添加hash # 字符来在 robots.txt 文件中添加注释。搜索引擎会忽略同一行中 # 后面的所有内容。
注释旨在供人类解释特定部分的含义。添加它们总是一个好主意,因为它们可以让你在下次打开文件时更快地了解发生了什么。
Wildcards 通配符
通配符是特殊字符,可以用作文本中其他符号的占位符,因此简化了创建 robots.txt 文件的过程。它们包括:
- 星号 *
- 美元符号 $
User-agent: *
在上面的示例中,User-agent 行中的星号指定了所有搜索引擎机器人。因此,它后面的每个指令都将针对所有爬虫。
Disallow: /*?
还可以使用它来定义路径。上面的示例意味着不允许使用每个以 “?” 结尾的 URL。
美元符号表示与 URL 末尾匹配的特定元素。
Disallow: /*.jpeg$
上面的示例表明,每个以 “.jpeg” 结尾的 URL 都应该被禁止。
可以在每个指令中使用通配符,但 sitemap 除外。
测试 robots.txt 文件
可以在 Google Search Console 和 Bing Webmaster Tools 中使用 robots.txt Tester 进行测试。只需输入你要验证的 URL,该工具就会显示它是允许还是不允许。
也可以直接在 robots.txt 测试器中编辑文件并重新测试更改。请记住,更改不会保存在你的网站上。你需要自行复制文件并将其上传到你的网站。
如果你更精通技术,还可以使用 Google 的开源 robots.txt 库在你的电脑上本地测试 robots.txt 文件。
后续步骤
Robots.txt vs. Meta Robots Tag vs. X-Robots-Tag
Robots.txt 并不是与爬虫通信的唯一方式。还可以使用 Meta Robots Tag 和 X-Robots-Tag。
最重要的区别是 robots.txt 控制网站的抓取,而 Meta Robots Tag 和 X-Robots-Tag 允许你控制其索引。
除其他外,这些方法的实现方式也有所不同。
当搜索引擎机器人找到一个页面时,它会首先查看 robots.txt 文件。如果不禁止抓取,它可以访问该网站,只有这样它才能找到潜在的 Meta Robots 标签或 X-Robots-Tag 标头。记住这一点很重要,原因有两个:
名称 | 实现 |
---|---|
Robots.txt | 添加到您网站根目录下的简单文本文件。 |
Meta robots tag | HTML 标记添加到代码的 <head> 部分中。 |
X-Robots-Tag | 在服务器端添加的 HTTP 响应标头的一部分。 |
- 结合方法 – 需要允许搜索引擎机器人抓取页面以查看 Meta Robots Tag 和 X-Robots-Tag。如果机器人无法访问该页面,它们将无法正常工作。
- 优化抓取预算 – 在这三种方法中,只有 robots.txt 可以帮助您节省抓取预算。
实践检验真理
以下是创建 robots.txt 文件时的一些最佳实践和提示:
- 不要使用 robots.txt 阻止 JavaScript 或 CSS 文件。 如果机器人无法访问这些资源,它们可能无法正确呈现你的内容。
- 确保将链接添加到你的站点地图中,以帮助所有搜索引擎机器人轻松找到它。
- robots.txt语法的解释可能因搜索引擎而异。 如果不确定,请务必仔细检查搜索引擎机器人如何处理特定指令。
- 使用通配符时要小心。如果滥用它们,你可能会错误地阻止对网站整个部分的访问。
- 请勿使用 robots.txt 来阻止你的私有内容。如果想保护你的页面,最好使用密码保护它。此外,robots.txt文件是公开访问的,可能会向危险的机器人泄露你的私人内容的位置。
- 禁止抓取程序访问你的网站不会将其从搜索结果页面中删除。如果有许多链接带有指向你的页面的描述性锚文本,它仍然可以被索引。如果想防止这种情况,你应该考虑改用 Meta Robots Tag 或 X-Robots-Tag 标头。
Nat H.
您好!我是Nat,imrnat的创始人。感谢您将宝贵的时间托付给我们,我希望您在这篇博文中找到了问题的答案。
如果您仍然想知道如何确切地推进您的自然增长,请查看我们的服务页面并安排一次免费的对话,我们将为您完成所有繁琐的工作。
希望能尽快与您交谈!