如何编写和提交 robots.txt 文件
您可以使用 robots.txt 文件控制抓取工具可以访问您网站上的哪些文件。
robots.txt 文件应位于网站的根目录下。因此,对于网站 www.example.com
,robots.txt 文件的路径应为 www.example.com/robots.txt
。robots.txt 是一种遵循漫游器排除标准的纯文本文件,由一条或多条规则组成。每条规则可禁止或允许所有或特定抓取工具抓取托管 robots.txt 文件的网域或子网域上的指定文件路径。除非您在 robots.txt 文件中另行指定,否则所有文件均隐式允许抓取。
下面是一个包含两条规则的简单 robots.txt 文件:
User-agent: Googlebot Disallow: /nogooglebot/ User-agent: * Allow: / Sitemap: https://www.example.com/sitemap.xml
以下是该 robots.txt 文件的含义:
-
名为 Googlebot 的用户代理不能抓取任何以
https://example.com/nogooglebot/
开头的网址。 - 其他所有用户代理均可抓取整个网站。不指定这条规则也无妨,结果是一样的;默认行为是用户代理可以抓取整个网站。
-
该网站的站点地图文件路径为
https://www.example.com/sitemap.xml
。
如需查看更多示例,请参阅语法部分。
创建 robots.txt 文件的基本准则
要创建 robots.txt 文件并使其在一般情况下具备可访问性和实用性,需要完成 4 个步骤:
创建 robots.txt 文件
您几乎可以使用任意文本编辑器创建 robots.txt 文件。例如,Notepad、TextEdit、vi 和 emacs 可用来创建有效的 robots.txt 文件。请勿使用文字处理软件,因为此类软件通常会将文件保存为专有格式,且可能会向文件中添加非预期的字符(如弯引号),这样可能会给抓取工具带来问题。如果保存文件时出现相应系统提示,请务必使用 UTF-8 编码保存文件。
格式和位置规则:
- 文件必须命名为 robots.txt。
- 网站只能有 1 个 robots.txt 文件。
-
robots.txt 文件必须位于其要应用到的网站主机的根目录下。例如,若要控制对
https://www.example.com/
下所有网址的抓取,就必须将 robots.txt 文件放在https://www.example.com/robots.txt
下,一定不能将其放在子目录中(例如https://example.com/pages/robots.txt
下)。如果您不确定如何访问自己的网站根目录,或者需要相应权限才能访问,请与网站托管服务提供商联系。如果您无法访问网站根目录,请改用其他屏蔽方法(例如meta
标记)。 -
robots.txt 文件可以位于子网域(例如
https://site.example.com/robots.txt
)或非标准端口(例如https://example.com:8181/robots.txt
)上。 - robots.txt 文件仅适用于所在的协议、主机和端口内的路径。也就是说,
https://example.com/robots.txt
中的规则仅适用于https://example.com/
中的文件,而不适用于子网域(如https://m.example.com/
)或备用协议(如http://example.com/
)。 - robots.txt 文件必须是采用 UTF-8 编码(包括 ASCII)的文本文件。Google 可能会忽略不属于 UTF-8 范围的字符,从而可能会导致 robots.txt 规则无效。
如何编写 robots.txt 规则
规则是关于抓取工具可以抓取网站哪些部分的说明。向 robots.txt 文件中添加规则时,请遵循以下准则:
- robots.txt 文件由一个或多个组(一组规则)组成。
-
每个组由多条规则(也称为指令)组成,每条规则各占一行。每个组都以
User-agent
行开头,该行指定了组适用的目标。 - 每个组包含以下信息:
- 组的适用对象(用户代理)
- 代理可以访问的目录或文件。
- 代理无法访问的目录或文件。
- 抓取工具会按从上到下的顺序处理组。一个用户代理只能匹配 1 个规则集(即与相应用户代理匹配的首个最具体组)。如果同一用户代理有多个组,这些组会在处理之前合并到一个组中。
-
系统的默认假设是:用户代理可以抓取所有未被
disallow
规则屏蔽的网页或目录。 -
规则区分大小写。例如,
disallow: /file.asp
适用于https://www.example.com/file.asp
,但不适用于https://www.example.com/FILE.asp
。 -
#
字符表示注释的开始处。在处理过程中,系统会忽略注释。
Google 的抓取工具支持 robots.txt 文件中的以下规则:
-
user-agent:
[必需,每个组需含一个或多个 User-agent 条目] 该规则指定了规则适用的自动客户端(即搜索引擎抓取工具)的名称。这是每个规则组的首行内容。Google 用户代理列表中列出了 Google 用户代理名称。使用星号 (*
) 会匹配除各种 AdsBot 抓取工具之外的所有抓取工具,AdsBot 抓取工具必须明确指定。例如:# Example 1: Block only Googlebot User-agent: Googlebot Disallow: / # Example 2: Block Googlebot and Adsbot User-agent: Googlebot User-agent: AdsBot-Google Disallow: / # Example 3: Block all crawlers except AdsBot (AdsBot crawlers must be named explicitly) User-agent: * Disallow: /
-
disallow:
[每条规则需含至少一个或多个disallow
或allow
条目] 您不希望用户代理抓取的目录或网页(相对于根网域而言)。如果规则引用了某个网页,则必须提供浏览器中显示的完整网页名称。它必须以/
字符开头;如果它引用了某个目录,则必须以/
标记结尾。 -
allow:
[每条规则需含至少一个或多个disallow
或allow
条目] 上文中提到的用户代理可以抓取的目录或网页(相对于根网域而言)。此规则用于替换disallow
规则,从而允许抓取已禁止访问的目录中的子目录或网页。对于单个网页,请指定浏览器中显示的完整网页名称。它必须以/
字符开头;如果它引用了某个目录,则必须以/
标记结尾。 -
sitemap:
[可选,每个文件可含零个或多个 sitemap 条目] 相应网站的站点地图的位置。站点地图网址必须是完全限定的网址;Google 不会假定存在或检查是否存在 http、https、www、非 www 网址变体。站点地图是一种用于指示 Google 应抓取哪些内容的理想方式,但并不用于指示 Google 可以抓取或不能抓取哪些内容。详细了解站点地图。 示例:Sitemap: https://example.com/sitemap.xml Sitemap: https://www.example.com/sitemap.xml
除 sitemap
之外的所有规则都支持使用通配符 *
表示路径前缀、后缀或整个字符串。
与这些规则均不匹配的行将被忽略。
如需有关每个规则的完整说明,请参阅 Google 对 robots.txt 规范的解释页面。
上传 robots.txt 文件
将 robots.txt 文件保存到计算机后,您便可以将其提供给搜索引擎抓取工具。没有一个统一工具可以帮助您完成这项工作,因为如何将 robots.txt 文件上传到网站取决于您的网站和服务器架构。请与您的托管公司联系,或在托管公司的文档中进行搜索;例如,搜索“上传文件 infomaniak”。
上传 robots.txt 文件后,请测试该文件是否可公开访问,以及 Google 能否解析该文件。
测试 robots.txt 标记
要测试新上传的 robots.txt 文件是否可公开访问,请在浏览器中打开无痕浏览窗口(或等效窗口),然后转到 robots.txt 文件的位置。例如 https://example.com/robots.txt
。如果您看到 robots.txt 文件的内容,就可准备测试标记了。
Google 提供了两种修复 robots.txt 标记相关问题的方式:
- Search Console 中的 robots.txt 报告。您只能针对您网站上可供访问的 robots.txt 文件使用此报告。
- 如果您是开发者,请了解并构建 Google 的开源 robots.txt 库,该库也用在 Google 搜索中。您可以使用此工具在计算机上本地测试 robots.txt 文件。
向 Google 提交 robots.txt 文件
在您上传并测试 robots.txt 文件后,Google 的抓取工具会自动找到并开始使用您的 robots.txt 文件。您无需采取任何操作。如果您更新了 robots.txt 文件,并需要尽快刷新 Google 的缓存副本,请了解如何提交更新后的 robots.txt 文件。
实用的 robots.txt 规则
下面是一些常见的实用 robots.txt 规则:
实用规则 | |
---|---|
禁止抓取整个网站 |
请注意,在某些情况下,Google 即使未抓取网站中的网址,仍可能将其编入索引。 User-agent: * Disallow: / |
禁止抓取某一目录及其内容 |
在目录名后添加一道正斜线,即可禁止抓取整个目录。 User-agent: * Disallow: /calendar/ Disallow: /junk/ Disallow: /books/fiction/contemporary/ |
仅允许某一抓取工具访问网站内容 |
只有 User-agent: Googlebot-news Allow: / User-agent: * Disallow: / |
允许除某一抓取工具以外的其他所有抓取工具访问网站内容 |
User-agent: Unnecessarybot Disallow: / User-agent: * Allow: / |
禁止抓取某一网页 |
例如,禁止抓取位于 User-agent: * Disallow: /useless_file.html Disallow: /junk/other_useless_file.html |
禁止抓取除子目录以外的整个网站 |
抓取工具只能访问 User-agent: * Disallow: / Allow: /public/ |
禁止 Google 图片访问某一特定图片 |
例如,禁止访问 User-agent: Googlebot-Image Disallow: /images/dogs.jpg |
禁止 Google 图片访问您网站上的所有图片 |
如果无法抓取图片和视频,则 Google 无法将其编入索引。 User-agent: Googlebot-Image Disallow: / |
禁止抓取某一特定文件类型的文件 |
例如,禁止抓取所有 User-agent: Googlebot Disallow: /*.gif$ |
禁止抓取整个网站,但允许 |
实施此规则会阻止您的网页显示在搜索结果中,但 User-agent: * Disallow: / User-agent: Mediapartners-Google Allow: / |
使用 * 和 $ 通配符匹配以特定字符串结尾的网址
|
例如,禁止抓取所有 User-agent: Googlebot Disallow: /*.xls$ |