robots.txt的详细解释!你必须知道的robots.txt知识

制作robots.txt文件设置需要访问您的网站的根目录。如果您不确定如何访问根,则可以联系您的虚拟主机服务提供商或者网站服务商或者设置为全部允许。此外,如果您知道您无法访问域的根,则可以使用其他阻止方法,例如密码保护服务器上的文件并将元标签插入到HTML中

什么是robots.txt?

Robots.txt是网站管理员创建的文本文件,用于指示Web漫游器(通常是搜索引擎漫游器)如何抓取他们网站上的网页。robots.txt文件是机器人排除协议(REP)的一部分,这是一组规范机器人抓取网页,访问和索引内容以及将内容提供给用户的Web标准。REP还包括诸如搜索引擎机器人之类的指令,以及搜索引擎如何对待链接(例如“跟随”或“nofollow”)的页面,子目录或站点范围的指令。
在实践中,robots.txt文件指示某些用户代理(网络爬行软件)是否可以抓取网站的某些部分。这些爬网指令由“禁止”或“允许”某些(或全部)用户代理的行为指定。

学习robots.txt语法

最简单的robots.txt文件使用的两个关键词,User-agentDisallow。用户代理是搜索引擎机器人(或网络爬虫软件); 大多数用户代理都列在Web机器人数据库中。Disallow是一个用于指示用户代理访问特定URL的命令。另一方面,要让Google访问不允许的父目录中的子目录的特定URL,则可以使用第三个关键字Allow
Google使用多个用户代理,例如Googlebot的Googlebot和Google图像搜索的Googlebot-Image。大多数Google用户代理都遵循您为Googlebot设置的规则,但您可以覆盖此选项,并为特定的Google用户代理制定特定规则。
使用关键字的语法如下:

User-agent: [the name of the robot the following rule applies to]
Disallow: [the URL path you want to block]
Allow: [the URL path in of a subdirectory, within a blocked parent directory, that you want to unblock]

这两行一起被认为是文件中的单个条目,其中Disallow规则仅适用于上面指定的用户代理。您可以根据需要添加任意数量的条目,多Disallow行可以应用于多个用户代理,全部在一个条目中。 您可以User-agent 通过列出一个星号(*)来将命令设置为适用于所有网络抓取工具,如下例所示:

User-agent: *

在robots.txt文件中,每组用户代理指令显示为一个离散集合,以换行符分隔:
在具有多个用户代理指令的robots.txt文件中,每个不允许或允许的规则适用于该特定行分隔符集中指定的用户标识。如果文件包含适用于多个用户代理的规则,则爬网程序只会注意(并遵循最具体的一组指令)(并遵循指令)。

块…

样品

整个站点  正斜杠(/): Disallow: /
 使用正斜杠跟踪目录名称的目录及其内容 Disallow: /sample-directory/
有些网页  由斜线后列出网页: Disallow: /private_file.html
Google Images的具体图片: User-agent: Googlebot-Image
Disallow: /images/dogs.jpg
Google图片上您网站上的所有图片: User-agent: Googlebot-Image
Disallow: /
特定文件类型的文件  (例如.gif): User-agent: Googlebot
Disallow: /*.gif$
您网站上的网页,但在这些网页上展示AdSense广告,不允许除Mediapartners-Google之外的所有网络抓取工具。此实施方法会从搜索结果中隐藏您的网页,但Mediapartners-Google网页抓取工具仍然可以分析这些网页,以决定向用户展示哪些广告。 User-agent: *
Disallow: /
User-agent: Mediapartners-Google
Allow: /
请注意,指令区分大小写。例如,Disallow: /file.asp会阻止http://i5seo.com/,但会允许http://i5seo.com/。Googlebot还忽略了空白和未知的指令 robots.txt

模式匹配规则

样品

要阻止任何字符序列,请使用星号(*)。例如,示例代码阻止对以“private”开头的所有子目录的访问: User-agent: Googlebot
Disallow: /private*/
阻止访问包含问号(?)的所有URL 。例如,示例代码阻止以您的域名开头的URL,后跟任何字符串,后跟一个问号,并以任何字符串结尾: User-agent: Googlebot
Disallow: /*?
要阻止以特定方式结束的任何URL,请使用$。例如,示例代码阻止任何结尾的URL .xls User-agent: Googlebot
Disallow: /*.xls$
要使用Allow和Disallow指令阻止模式,请参阅右侧的示例。在该示例中,a ?表示会话ID。一般来说,包含这些ID的网址会被Google阻止,以防止网络抓取工具抓取重复的网页。同时,如果一些结尾的URL ?是要包含的页面的版本,则可以使用以下方法组合Allow和Disallow指令:

  1. 该  Allow: /*?$ 指令允许任何结尾的URL ? (更具体地说,它允许以您的域名开始的URL,后跟一个字符串,后跟一个?,后面没有字符?)。
  2. 该  Disallow: / *? 指令阻止包含一个?(更具体地说,它阻止以您的域名开头的URL,后跟一个字符串,后跟一个问号,后跟一个字符串)的任何URL 。
User-agent: *
Allow: /*?$
Disallow: /*?

保存robots.txt文件

您必须应用以下保存约定,以便Googlebot和其他网络抓取工具可以找到并识别您的robots.txt 文件:

  • 您必须将robots.txt 代码保存为文本文件,
  • 您必须将文件放在您网站(或您的域的根目录)的最高级目录中
  • 必须命名robots.txt文件robots.txt

例如,robots.txt 保存在example.comURL地址  根目录下的文件http://www.example.com/robots.txt可以由网页抓取工具发现,但 任何网页抓取工具都找不到robots.txt文件  http://www.example.com/not_root/robots.txt

robots.txt如何工作?

搜索引擎有两个主要工作:

  1. 抓取网页发现内容;
  2. 索引该内容,以便它可以提供给正在寻找信息的搜索者。

为了抓取网站,搜索引擎会按照链接从一个网站到另一个站点 – 最终爬行数十亿的链接和网站。这种爬行行为有时被称为“蜘蛛”。
在到达某个网站之后,在进行蜘蛛网访问之前,搜索抓取工具将会查找一个robots.txt文件。如果找到一个,抓取工具将在继续页面之前首先读取该文件。由于robots.txt文件包含有关搜索引擎应如何抓取的信息,所以在此处找到的信息将指示在此特定站点上进一步执行抓取操作。如果robots.txt文件并没有包含禁止用户代理的活动的任何指示(或如果网站没有robots.txt文件),它会继续抓取网站上的其他信息。

其他快速的robots.txt必须知道:

(下面更详细地讨论)

  • 为了找到,必须将robots.txt文件放在网站的顶级目录中。
  • Robots.txt区分大小写:文件必须命名为“robots.txt”(不是Robots.txt,robots.TXT或其他)。
  • 某些用户代理(漫游器)可能会选择忽略您的robots.txt文件。这更像是恶意软件机器人或电子邮件地址刮板等恶意抓取工具,尤其常见。
  • /robots.txt文件是公开的:只需将/robots.txt添加到任何根域的末尾即可查看该网站的指令(如果该站点具有 robots.txt文件!)。这意味着任何人都可以看到您执行或不想抓取的页面,因此请勿使用它们来隐藏私人用户信息。
  • 根域上的每个子域使用单独的robots.txt文件。这意味着blog.example.com和example.com都应该有自己的robots.txt文件(在blog.example.com/robots.txt和example.com/robots.txt)。
  • 通常最好的做法是在robots.txt文件底部指出与该域相关联的任何站点地图的位置。

技术robots.txt语法

Robots.txt语法可以被认为是robots.txt文件的“语言”。您有可能在漫游器文件中遇到的五个常见术语。他们包括:

  • 用户代理:您提供抓取指令的特定网页抓取工具(通常是搜索引擎)。这里可以找到大多数用户代理的列表
  • Disallow:用于告诉用户代理不抓取特定URL的命令。每个URL只允许一个“Disallow:”行。
  • 允许(仅适用于Googlebot):即使可以禁止其父页面或子文件夹,也可以通知Googlebot它可以访问页面或子文件夹的命令。
  • 爬网延迟:抓取工具在加载和抓取页面内容之前应等待几毫秒。请注意,Googlebot不会确认此命令,但可以在Google Search Console中设置抓取速度
  • Sitemap:用于调出与此URL相关联的任何XML站点的位置。请注意,此命令由Google,Ask,Bing和Yahoo支持。

模式匹配

当涉及阻止或允许的实际网址时,robots.txt文件可以变得相当复杂,因为它们允许使用模式匹配来覆盖一系列可能的URL选项。Google和Bing都尊重两个正则表达式,可以用于标识SEO想要排除的页面或子文件夹。这两个字符是星号(*)和美元符号($)。

  • *是一个通配符,表示任何字符序列
  • $匹配URL的结尾

谷歌提供了可能的模式匹配语法和示例的大名单这里

robots.txt在哪里上网?

每当他们来到一个网站时,搜索引擎和其他网络抓取机器人(如Facebook的抓取工具,Facebot)都知道寻找一个robots.txt文件。但是,他们只会在一个特定的地方找到该文件:主目录(通常是您的根域或主页)。如果用户代理访问wenq6.sg-host.com/robots.txt,并且那里找不到机器人文件,那么它将假设该站点没有该站点,并继续抓取页面上的所有内容(甚至在整个站点上)。即使robots.txt的页面在,比方说,example.com/index/robots.txt或存在wenq6.sg-host.com/homepage/robots.txt,它不会被用户代理发现,因此该网站将被处理好像没有任何机器人文件。
为了确保找到您的robots.txt文件,请始终将其包含在主目录或根域中。

为什么需要robots.txt?

Robots.txt文件控制抓取工具访问您网站的某些区域。虽然如果您意外不允许Googlebot抓取您的整个网站(!!),这可能非常危险,有些情况下robots.txt文件可以非常方便。
一些常见的用例包括:

  • 防止重复内容出现在SERP中(请注意,元机器人通常是更好的选择)
  • 将网站的整个部分保留为私有(例如,您的工程团队的分期站点)
  • 保持内部搜索结果页面不显示在公共SERP上
  • 指定站点地图的位置
  • 防止搜索引擎对您网站上的某些文件进行索引(图像,PDF等)
  • 指定抓取延迟,以便在抓取工具一次加载多个内容时,防止服务器过载

如果您的站点上没有要控制用户代理访问的区域,则可能根本不需要robots.txt文件。

检查是否有robots.txt文件

不确定是否有robots.txt文件?只需键入根域,然后将/robots.txt添加到URL的末尾。例如,Moz的漫游器文件位于moz.com/robots.txt。
如果没有.txt页面出现,您目前没有(实时)robots.txt页面。

如何创建robots.txt文件

如果你发现你没有一个robots.txt文件或者想改变你的,创建一个是一个简单的过程。Google 本文介绍了robots.txt文件创建过程,此工具允许您测试您的文件是否正确设置。
寻找创建机器人文件的一些做法?这篇博文通过一些交互式的例子。

SEO最佳做法

  • 确保您没有屏蔽您要抓取的网站的任何内容或部分。
  • robots.txt阻止的网页上的链接不会被遵循。这意味着1.)除非它们还与其他可搜索引擎可访问的页面(即,通过robots.txt,元机器人或其他方式未被阻止的页面)链接,否则链接的资源将不会被抓取,并且可能无法编入索引。2.)没有链接权限可以从阻止的页面传递到链接目的地。如果您有要传递权益的页面,请使用除robots.txt之外的其他阻止机制。
  • 不要使用robots.txt来防止敏感数据(如私人用户信息)出现在SERP结果中。因为其他页面可能会直接链接到包含私人信息的页面(从而绕过您的根域或主页上的robots.txt指令),它可能仍然被索引。如果要从搜索结果中阻止您的页面,请使用其他方法,如密码保护或noindex 元指令。
  • 一些搜索引擎有多个用户代理。例如,Google使用Googlebot进行自然搜索,并使用Googlebot-Image进行图像搜索。来自同一搜索引擎的大多数用户代理遵循相同的规则,因此不需要为每个搜索引擎的多个抓取工具指定指令,但是具有这样的功能可以让您调整网站内容的爬网方式。
  • 搜索引擎将缓存robots.txt内容,但通常每天至少更新一次缓存的内容。如果您更改文件并希望比发生更快更新,则可以将robots.txt网址提交给Google

Robots.txt vs元机器人与x机器人

这么多机器人!这三种类型的机器人指令有什么区别?首先,robots.txt是一个实际的文本文件,而meta和x-robots是元指令。除了他们实际上,三者都有不同的功能。Robots.txt指定站点或目录范围的抓取行为,而元和x-robots可以指定单个页面(或页面元素)级别的索引行为。

发表评论