使用 robots.txt 文件阻止或删除网页

来源:互联网 发布:hdmi数字矩阵切换器 编辑:程序博客网 时间:2024/04/30 12:27

robots.txt 文件可限制抓取网页的搜索引擎漫游器对您网站的访问。这些漫游器是自动的,它们在访问任意网站的网页之前,都会查看是否存在阻止它们访问特定网页的 robots.txt 文件。(虽然某些漫游器可能会以不同的方式解释 robots.txt 文件中的指令,但所有正规的漫游器都会遵循这些指令。然而,robots.txt 不是强制执行的,一些垃圾信息发送者和其他麻烦制造者可能会忽略它。因此,我们建议对机密信息采用密码保护。)

要查看已阻止 Google 抓取哪些网址,请访问网站站长工具运行状况部分中的已拦截的网址页。

只有当您的网站中包含您不想让搜索引擎编入索引的内容时,才需要使用 robots.txt 文件。如果您希望搜索引擎将网站上的所有内容编入索引,则不需要 robots.txt 文件(甚至连空的 robots.txt 文件也不需要)。

尽管 Google 不会抓取 robots.txt 拦截的网页内容或将其编入索引,但如果我们在网络上的其他网页中发现这些内容,我们仍然会将这些网页的网址编入索引。因此,网页网址,可能还有其他公开信息(如指向网站的链接中的定位文字或开放目录项目 (www.dmoz.org) 中的标题),都有可能会出现在 Google 搜索结果中。

为了能使用 robots.txt 文件,您必须要有对您域的根目录的访问权限(如果您不能确定是否有该权限,请与您的网络托管商核实)。如果您没有对域的根目录的访问权限,可以使用 robots 元标记来限制访问。

要彻底阻止网页的内容列在 Google 网页索引中(即使有其他网站链接到该网页),请使用 noindex 元标记或 x-robots-tag。只要 Googlebot 抓取该网页,就会读取 noindex 元标记并阻止该网页显示在网页索引中。如果您要限制非 HTML 文件(如图形或其他类型的文档)的索引编制,x-robots-tag HTTP 标头尤其实用。

创建 robots.txt 文件

最简单的 robots.txt 文件使用两条规则:

  • User-agent:应用以下规则的漫游器
  • Disallow:要拦截的网址

这两行会视为文件中的一个条目。您可根据需要加入任意多个条目。您可在一个条目中加入多个 Disallow 行和多个 User-agent。

robots.txt 文件的各个部分都是独立的,而不是在先前部分的基础上构建的。例如:

User-agent: *Disallow: /folder1/User-Agent: GooglebotDisallow: /folder2/

在本例中,只有与 /folder2/ 匹配的网址才不会被 Googlebot 抓取。

User-agent 和漫游器

User-agent 是一种特定的搜索引擎漫游器。网络漫游器数据库列出了许多常用的漫游器。您可以将某一条目设置为适用于某一特定漫游器(以显示名称的方式列出)或适用于所有漫游器(以标记为星号的方式列出)。适用于所有漫游器的条目应为以下格式:

User-agent: *

Google 使用多种不同的漫游器 (User-agent)。我们的网页搜索所使用的漫游器为Googlebot。Googlebot-Mobile 和 Googlebot-Image 等其他漫游器也会遵循您为 Googlebot 所设置的规则,但您也可以为这些特定的漫游器设置特定的规则。

拦截 User-agent

Disallow 行列出的是您要拦截的网页。您可以列出某一特定的网址或模式。条目应以正斜线 (/) 开头。

  • 要拦截整个网站,请使用正斜线。
    Disallow: /
  • 要拦截某一目录以及其中的所有内容,请在目录名后添加正斜线。
    Disallow: /无用目录/
  • 要拦截某个网页,请列出该网页。
    Disallow: /私人文件.html
  • 要从 Google 图片中删除特定图片,请添加以下内容:
    User-agent: Googlebot-ImageDisallow: /images/dogs.jpg 
  • 要从 Google 图片中删除您网站上的所有图片,请使用以下内容:
    User-agent: Googlebot-ImageDisallow: / 
  • 要阻止特定类型的文件(如 .gif),请使用以下内容:
    User-agent: GooglebotDisallow: /*.gif$
  • 要阻止抓取您网站上的网页,而同时又能在这些网页上显示 Adsense 广告,请禁止除 Mediapartners-Google 以外的所有漫游器。这样可使网页不出现在搜索结果中,同时又能让 Mediapartners-Google 漫游器分析网页,从而确定要展示的广告。Mediapartners-Google 漫游器不与其他 Google User-agent 共享网页。例如:
    User-agent: *Disallow: /User-agent: Mediapartners-GoogleAllow: /

请注意,指令区分大小写。例如,Disallow: /junk_file.asp 会拦截 http://www.example.com/junk_file.asp,却会允许 http://www.example.com/Junk_file.asp。Googlebot 会忽略 robots.txt 中的空白内容(特别是空行)和未知指令。

Googlebot 支持通过 robots.txt 文件提交站点地图文件。

模式匹配

Googlebot(但并非所有的搜索引擎)遵循某些模式匹配原则。

  • 要匹配连续字符,请使用星号 (*)。例如,要阻止对所有以 private 开头的子目录的访问,请使用以下内容:
    User-agent: GooglebotDisallow: /private*/
  • 要阻止对所有包含问号 (?) 的网址的访问(具体地说,这种网址以您的域名开头、后接任意字符串,然后接问号,而后又接任意字符串),请使用以下内容:
    User-agent: GooglebotDisallow: /*?
  • 要指定与某个网址的结尾字符相匹配,请使用 $。例如,要拦截以 .xls 结尾的所有网址,请使用以下内容:
    User-agent: Googlebot Disallow: /*.xls$

    您可将此模式匹配与 Allow 指令配合使用。例如,如果 ? 代表一个会话 ID,那么您可能希望排除包含 ? 的所有网址,以确保 Googlebot 不会抓取重复网页。但是以 ? 结尾的网址可能是您希望包含在内的网页的版本。在此情况下,您可以对您的 robots.txt 文件进行如下设置:

    User-agent: *Allow: /*?$Disallow: /*?

    Disallow: /*? 指令会阻止包含 ? 的所有网址(具体地说,它将拦截所有以您的域名开头、后接任意字符串,然后接问号,而后又接任意字符串的网址)。

    Allow: /*?$ 指令将允许以 ? 结尾的任何网址(具体地说,它将允许所有以您的域名开头、后接任意字符串,然后接 ?,? 之后不接任何字符的网址)。

保存 robots.txt 文件,方法是下载文件或将内容复制到文本文件并保存为 robots.txt。将文件保存到您网站的顶级目录下。robots.txt 文件必须位于域的根目录中并命名为“robots.txt”。位于子目录中的 robots.txt 文件无效,因为漫游器只在域的根目录中查找此文件。例如,http://www.example.com/漫游器.txt 是一个有效的位置,但 http://www.example.com/我的网站/漫游器.txt 是一个无效的位置。

测试 robots.txt 文件

测试 robots.txt 工具可指明您的 robots.txt 文件是否会意外阻止 Googlebot 对您网站上的某个文件或目录的访问,或者它是否会允许 Googlebot 抓取不应显示在网络上的文件。当您输入建议的 robots.txt 文件内容时,该工具会采用与 Googlebot 相同的方式进行读取,并会列出该文件的效果以及发现的所有问题。

要测试网站的 robots.txt 文件,请执行以下操作:

  1. 在网站站长工具首页上,点击相关网站。
  2. 运行状况 (Health) 下,点击已拦截的网址。。
  3. 请点击测试 robots.txt 标签(如果尚未选中的话)。
  4. 复制您的 robots.txt 文件的内容,并将其粘贴到第一个框中。
  5. 网址框中,列出要用于测试的网站。
  6. 在 User-agent 列表中,选择所需的 User-agent。

系统不会保存您在此工具中所做的任何更改。要保存所有更改,您需要复制相关内容并将其粘贴到您的 robots.txt 文件中。

此工具只为 Google User-agent(如 Googlebot)提供结果。其他漫游器可能无法以相同的方式解译 robots.txt 文件。例如,Googlebot 支持标准 robots.txt 协议的扩展定义。它可以解析 Allow: 指令以及某些模式匹配。因此,尽管工具会将包含这些扩展名的行显示为已解析,但请切记,这只适用于 Googlebot,而并不一定适用于可能抓取您网站的其他漫游器。