使用robots.txt阻止对网址的访问

创建 robots.txt 文件

使用入门

robots.txt 文件由一条或多条规则组成。每条规则可禁止(或允许)特定抓取工具抓取相应网站中的指定文件路径。

下面是一个包含两条规则的简单 robots.txt 文件的示例,具体解析请见下文:

User-agent: Googlebot
Disallow: /nogooglebot/

User-agent: *
Allow: /

Sitemap: http://www.example.com/sitemap.xml

 

解析:

  1. 名为“Googlebot”抓取工具的用户代理不应抓取 http://example.com/nogooglebot/ 文件夹或任何子目录。
  2. 所有其他用户代理均可访问整个网站。(不指定这条规则也无妨,结果是一样的,因为完全访问权限是系统默认的前提。)
  3. 网站的站点地图文件位于 http://www.example.com/sitemap.xml。

我们稍后会提供一个更详细的示例。

基本的 robots.txt 规则

下面是一些与 robots.txt 文件有关的基本规则。请尝试使用 robots.txt 测试工具为您的网站编写或修改 robots.txt 文件。借助此工具,您可以测试自己网站的语法和行为。然后,阅读 robots.txt 文件的完整语法,因为漫游器语法比乍一看更复杂些。

格式和位置

您几乎可以使用任意文本编辑器创建 robots.txt 文件。您所用的文本编辑器应能够创建标准 ASCII 或 UTF-8 文本文件;请勿使用文字处理软件,因为此类软件通常会将文件保存为专有格式,且可能会向文件中添加非预期的字符(如弯引号),而这可能会导致抓取工具无法顺利读取 robots.txt 文件。

格式和位置规则:

  • robots.txt 是 ASCII 或 UTF-8 文本文件。不允许包含其他字符。
  • 文件必须命名为 robots.txt。
  • 您的网站只能有 1 个 robots.txt 文件。
  • robots.txt 文件必须位于它所应用到的网站主机的根目录下。例如,要控制对 http://www.example.com/ 下所有网址的抓取,robots.txt 文件必须放入根目录(即 http://www.example.com/robots.txt),而不能放入子目录(例如 http://example.com/pages/robots.txt)。如果您不知道如何访问网站的根目录,或者需要申请对网站根目录的访问权限,请与您的网络托管服务提供商联系。如果您无法访问您的网站根目录,请改用其他屏蔽方法(例如元标记)。
  • robots.txt 文件可应用到“子网域”(例如 http://website.example.com/robots.txt)或非标准端口(例如 http://example.com:8181/robots.txt)。

语法

  • robots.txt 文件由一组或多组规则组成。
  • 每条规则可指定一个或多个用户代理,并阐明相应代理可以访问或不能访问的目录或文件。
  • 系统会按照从上到下的顺序处理这些规则,而且一个用户代理只能匹配 1 个规则集(即与相应用户代理匹配的首条最具体的规则)。
  • 系统默认的前提是:用户代理可以抓取所有未被 Disallow: 规则禁止访问的网页或目录。
  • 规则区分大小写。例如,Disallow: /file.asp 适用于 http://www.example.com/file.asp,但不适用于 http://www.example.com/File.asp

robots.txt 文件中使用了以下关键字:

  • User-agent:[必需,每条规则需要一个或多个] 此条规则所要应用到的搜索引擎“漫游器”(即网页抓取工具软件)的名称。Web Robots DatabaseGoogle 用户代理列表中列出了大多数用户代理名称。支持使用星号 (*) 通配符表示路径前缀、后缀或整个字符串。像下例中那样使用星号 (*) 可匹配所有抓取工具(各种 AdsBot 抓取工具除外,此类抓取工具必须明确指定)。(查看 Google 抓取工具名称列表。)
    # Block all but AdsBot crawlers
    User-agent: *
  • Disallow:[每条规则需要至少一个或多个 Disallow 或 Allow 条目] 用户代理不应抓取的目录或网页(以相对于根网域的路径表示)。如果要指定网页,就应提供浏览器中显示的完整网页名称;如果要指定目录,则应以 / 标记结尾。支持使用星号 (*) 通配符表示路径前缀、后缀或整个字符串。
  • Allow:[每条规则需要至少一个或多个 Disallow 或 Allow 条目] 上文中提到的用户代理应抓取的目录或网页(以相对于根网域的路径表示)。此指令用于替换 Disallow 指令,从而允许抓取已禁止访问的目录中的子目录或网页。如果要指定网页,就应提供浏览器中显示的完整网页名称;如果要指定目录,则应以 / 标记结尾。支持使用星号 (*) 通配符表示路径前缀、后缀或整个字符串。
  • Sitemap:[可选,每个文件可包含零个或多个] 相应网站的站点地图的位置。此行不是必需的,您可酌情指定多个站点地图,并使用换行符分隔各个站点地图。站点地图是一种用于指示 Google 应抓取哪些内容的理想方式,但并不用于指示 Google 可以抓取或不能抓取哪些内容。详细了解站点地图。

未知关键字将被忽略。

再看一个示例文件

robots.txt 文件由一个或多个规则块组成,其中每个规则块都以 User-agent 行(指定了相应规则适用的目标)开头。下面是一个包含两条规则的文件;内嵌的备注分别对每条规则进行了解析:

# Block googlebot from example.com/directory1/... and example.com/directory2/...
# but allow access to directory2/subdirectory1/...
# All other directories on the site are allowed by default.
User-agent: googlebot
Disallow: /directory1/
Disallow: /directory2/
Allow: /directory2/subdirectory1/

# Block the entire site from anothercrawler.
User-agent: anothercrawler
Disallow: /

robots.txt 的完整语法

您可在此处找到 robots.txt 的完整语法。robots.txt 语法的某些部分比较棘手,需要重点学习,因此请一定仔细阅读整个文档。

实用的 robots.txt 规则

下面是一些常见的实用 robots.txt 规则:

规则 示例
禁止抓取整个网站。 请注意,在某些情况下,Google 即使未抓取网站的网址,仍可能会将其编入索引。注意:这不适用于各种 AdsBot 抓取工具,此类抓取工具必须明确指定。
User-agent: *
Disallow: /
禁止抓取某一目录及其内容(在目录名后面添加一道正斜线)。请注意,若想禁止访问私密内容,则不应使用 robots.txt,而应改用适当的身份验证机制。对于 robots.txt 文件所禁止抓取的网址,Google 仍可能会在不进行抓取的情况下将其编入索引;另外,由于 robots.txt 文件可供任何人随意查看,因此可能会泄露您的私密内容的位置。
User-agent: *
Disallow: /calendar/
Disallow: /junk/
仅允许使用某一抓取工具
User-agent: Googlebot-news
Allow: /

User-agent: *
Disallow: /
允许使用除某一抓取工具以外的其他所有抓取工具
User-agent: Unnecessarybot
Disallow: /

User-agent: *
Allow: /

禁止抓取某一网页(在正斜线后面列出网页):

Disallow: /private_file.html

禁止 Google 图片访问某一特定图片:

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: /
匹配以某一特定字符串结尾的网址 - 需使用美元符号 ($)。例如,示例代码会禁止访问以 .xls 结尾的所有网址:
User-agent: Googlebot
Disallow: /*.xls$
本文是否对您有帮助?
您有什么改进建议?