robots.txt文件使用教程
您可以使用 robots.txt 文件控制抓取工具可以访问您网站上的哪些文件。robots.txt 文件应位于网站的根目录下。因此,对于网站 www.example.com
,robots.txt 文件的路径应为 www.example.com/robots.txt
。robots.txt 是一种遵循漫游器排除标准的纯文本文件,由一条或多条规则组成。每条规则可禁止或允许特定抓取工具抓取相应网站的指定文件路径下的文件。除非您在 robots.txt 文件中另行指定,否则所有文件均隐式允许抓取。
下面是一个包含两条规则的简单 robots.txt 文件:
User-agent: Googlebot
Disallow: /nogooglebot/
User-agent: *
Allow: /
Sitemap: http://www.example.com/sitemap.xml
以下是该 robots.txt 文件的含义:
- 名为 Googlebot 的用户代理不能抓取任何以
http://example.com/nogooglebot/
开头的网址。 - 所有其他用户代理均可抓取整个网站。不指定这条规则也无妨,结果是一样的;默认行为是用户代理可以抓取整个网站。
- 该网站的站点地图文件路径为
http://www.example.com/sitemap.xml
。
创建 robots. txt 文件的基本准则
要创建 robots.txt 文件并使其在一般情况下具备可访问性和实用性,需要完成 4 个步骤:
- 创建一个名为 robots.txt 的文件。
- 向 robots.txt 文件添加规则。
- 将 robots.txt 文件上传到您的网站。
- 测试 robots.txt 文件。
创建 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
下)。如果您不确定如何访问自己的网站根目录,或者需要相应权限才能访问,请与网站托管服务提供商联系。如果您无法访问网站根目录,请改用其他屏蔽方法(例如元标记)。 - robots.txt 文件可应用到子网域(例如
https://website.example.com/robots.txt
)或非标准端口(例如http://example.com:8181/robots.txt
)。 - 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: 不允许Googlebot用户代理爬取本站任何资源
User-agent: Googlebot
Disallow: /
# Example 2: 不允许Googlebot和AdsBot-Google用户代理爬取本站任何资源
User-agent: Googlebot
User-agent: AdsBot-Google
Disallow: /
# Example 3: 不允许任何用户代理爬取本站任何资源
User-agent: *
Disallow: /
disallow:
[每条规则需含至少一个或多个disallow
或allow
条目] 您不希望用户代理抓取的目录或网页(相对于根网域而言)。如果规则引用了某个网页,则必须提供浏览器中显示的完整网页名称。它必须以/
字符开头;如果它引用了某个目录,则必须以/
标记结尾。allow:
[每条规则需含至少一个或多个disallow
或allow
条目] 上文中提到的用户代理可以抓取的目录或网页(相对于根网域而言)。此指令用于替换disallow
指令,从而允许抓取已禁止访问的目录中的子目录或网页。对于单个网页,请指定浏览器中显示的完整网页名称。对于目录,请用/
标记结束规则。sitemap:
[可选,每个文件可含零个或多个 sitemap 条目] 相应网站的站点地图的位置。站点地图网址必须是完全限定的网址;Google 不会假定存在或检查是否存在 http、https、www、非 www 网址变体。站点地图是一种指示 Google 应抓取哪些内容的不错方式,但并不用于指示 Google 可以抓取或不能抓取哪些内容。详细了解站点地图如何生成,可以参照:WordPress网站地图插件SiteMAP。 示例:
Sitemap: https://example.com/sitemap.xml
Sitemap: http://www.example.com/sitemap.xml
除 sitemap
之外的所有指令都支持使用通配符 *
表示路径前缀、后缀或整个字符串。
与这些指令均不匹配的行将被忽略。
上传 robots. txt 文件
将 robots.txt 文件保存到计算机后,您便可以将其提供给搜索引擎抓取工具。没有一个统一工具可以帮助您完成这项工作,因为如何将 robots.txt 文件上传到网站取决于您的网站和服务器架构。
博主直接上传到了nginx配置的目录下了,如下图:
nginx配置如下:
上传 robots.txt 文件后,请测试该文件是否可公开访问,以及 Google 能否解析该文件。请求如下:
实用的 robots. txt 规则
下面是一些常见的实用 robots.txt 规则:
实用规则
|
|
禁止抓取整个网站
|
请注意,在某些情况下,Google 即使未抓取网站的网址,仍可能将其编入索引。
这不适用于各种 AdsBot 抓取工具,此类抓取工具必须明确指定。
|
禁止抓取某一目录及其内容
|
在目录名后添加一道正斜线,即可禁止抓取整个目录。
注意,请勿使用 robots.txt 禁止访问私密内容,而是改为使用适当的身份验证机制。对于 robots.txt 文件所禁止抓取的网址,Google 仍可能会在不进行抓取的情况下将其编入索引;另外,由于 robots.txt 文件可供任何人随意查看,因此可能会泄露您的私密内容的位置。
|
仅允许某个抓取工具访问网站内容
|
只有 googlebot-news 可以抓取整个网站。
|
允许除某一抓取工具以外的其他所有抓取工具访问网站内容
|
Unnecessarybot 不能抓取相应网站,所有其他漫游器都可以。
|
禁止抓取某一网页
|
例如,禁止抓取 useless_file.html 网页。
|
禁止 Google 图片访问某一特定图片
|
例如,禁止访问 dogs.jpg 图片。
|
禁止 Google 图片访问您网站上的所有图片
|
如果无法抓取图片和视频,则 Google 无法将其编入索引。
|
禁止抓取某一特定文件类型的文件
|
例如,禁止抓取所有 .gif 文件。
|
禁止抓取整个网站,但允许 Mediapartners-Google 访问内容
|
实施此规则会阻止您的网页显示在搜索结果中,但 Mediapartners-Google 网页抓取工具仍能分析这些网页,以确定要向访问您网站的用户显示哪些广告。
|
使用
$
匹配以特定字符串结尾的网址
|
例如,禁止抓取所有 .xls 文件。
|
写在最后
入门使用就这些,更高深的用法在实践中去发现吧。。。
共有 0 条评论