Wednesday, March 20, 2019

robots.txt - 根目录 - 禁止/允许收录

如何使用robots.txt文件禁止或允许搜索引擎收录:


使用入门

robots.txt 文件应位于您网站的根目录下。也就是说,如果您的网站是 www.example.com,则 robots.txt 文件的路径应为 www.example.com/robots.txt。robots.txt 是一种遵照漫游器排除标准创建的纯文本文件,由一条或多条规则组成。每条规则可禁止(或允许)特定抓取工具抓取相应网站中的指定文件路径。
下面是一个包含两条规则的简单 robots.txt 文件的示例,具体解析请见下文:
# Rule 1
User-agent: Googlebot
Disallow: /nogooglebot/

# Rule 2
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 文件。您所用的文本编辑器应能够创建标准 ASCII 或 UTF-8 文本文件;请勿使用文字处理软件,因为此类软件通常会将文件保存为专有格式,且可能会向文件中添加非预期的字符(如弯引号),而这可能会导致抓取工具无法顺利读取 robots.txt 文件。
    使用 robots.txt 测试工具为您的网站编写或修改 robots.txt 文件。借助此工具,您可以测试自己网站的语法和行为。
    格式和位置规则:
    • 文件必须命名为 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 必须是 ASCII 或 UTF-8 文本文件。不允许包含其他字符。
    • robots.txt 文件由一条或多条规则组成。
    • 每条规则由多条指令(说明)组成,每条指令各占一行。
    • 每条规则包含以下信息:
      • 此规则的适用对象(即用户代理
      • 代理可以访问的目录或文件,和/或
      • 代理无法访问的目录或文件。
    • 系统会按照从上到下的顺序处理这些规则,而且一个用户代理只能匹配 1 个规则集(即与相应用户代理匹配的首条最具体的规则)。
    • 系统的默认假设是:用户代理可以抓取所有未被 Disallow: 规则禁止访问的网页或目录。
    • 规则区分大小写。例如,Disallow: /file.asp 适用于 http://www.example.com/file.asp,但不适用于 http://www.example.com/FILE.asp
    robots.txt 文件中可以使用下列指令:
    • User-agent:[必需,每条规则需含一个或多个 User-agent 条目] 此规则的适用搜索引擎漫游器(即网页抓取工具软件)的名称。这是每条规则的首行内容。Web Robots Database 和 Google 用户代理列表中列出了大多数用户代理名称。支持使用星号 (*) 通配符表示路径前缀、后缀或整个字符串。像下例中那样使用星号 (*) 可匹配除各种 AdsBot 抓取工具之外(此类抓取工具必须明确指定)的所有抓取工具。(查看 Google 抓取工具名称列表。)示例:
      # 示例 1:仅屏蔽 Googlebot
      User-agent: Googlebot
      Disallow: /
      
      # 示例 2:屏蔽 Googlebot 和 Adsbot
      User-agent: Googlebot
      User-agent: AdsBot-Google
      Disallow: /
       
      # 示例 3:屏蔽除 AdsBot 抓取工具之外的所有抓取工具
      User-agent: * 
      Disallow: /
    • Disallow:[每条规则需含至少一个或多个 Disallow 或 Allow 条目] 用户代理不应抓取的目录或网页(相对于根网域而言)。如果要指定网页,就应提供浏览器中显示的完整网页名称;如果要指定目录,则应以标记“/”结尾。支持使用通配符“*”表示路径前缀、后缀或整个字符串。
    • Allow:[每条规则需含至少一个或多个 Disallow 或 Allow 条目] 上文中提到的用户代理应抓取的目录或网页(相对于根网域而言)。此指令用于替换 Disallow 指令,从而允许抓取已禁止访问的目录中的子目录或网页。如果要指定网页,就应提供浏览器中显示的完整网页名称;如果要指定目录,则应以标记“/”结尾。支持使用通配符“*”表示路径前缀、后缀或整个字符串。
    • Sitemap:[可选,每个文件可含零个或多个 Sitemap 条目] 相应网站的站点地图的位置。必须是完全限定的网址;Google 不会假定存在或检查是否存在 http/https/www/非 www 等网址变体。站点地图是一种用于指示 Google 应抓取哪些内容(而不是可以或无法抓取哪些内容)的好方法。详细了解站点地图。 示例:
      Sitemap: https://example.com/sitemap.xml
      Sitemap: http://www.example.com/sitemap.xml
    未知关键字将被忽略。

    再看一个示例文件

    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生效的过程:
      1.蜘蛛发现robots文件修改并将信息传回
      2.分析修改前后的robots文件
      3.删除不允许被收录的索引数据
      这个过程中肯能还会存在其他的一些步骤,然而由于每个网站蜘蛛爬的频率和网站的权重不同(网站的重要性)而导致蜘蛛发现robots更改的时间延时或者被处理的优先性不同,最终导致的结果就是robots的生效时间不同。
      通过以上分析我们可以得出robots的生效时间并不是一定的

    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$

    1如果允许所有搜索引擎访问网站的所有部分的话 我们可以建立一个空白的文本文档,命名为robots.txt放在网站的根目录下即可。
    robots.txt写法如下:
    User-agent: *
    Disallow:
    或者
    User-agent: *
    Allow: /

    2如果我们禁止所有搜索引擎访问网站的所有部分的话
    robots.txt写法如下:
    User-agent: *
    Disallow: /

    3如果我们需要某一个搜索引擎的抓取的话,比如百度,禁止百度索引我们的网站的话
    robots.txt写法如下:
    User-agent: Baiduspider
    Disallow: /

    4如果我们禁止Google索引我们的网站的话,其实跟示例3一样,就是User-agent:头文件的蜘蛛名字改成谷歌的Googlebot
    即可
    robots.txt写法如下:
    User-agent: Googlebot
    Disallow: /

    5如果我们禁止除Google外的一切搜索引擎索引我们的网站话
    robots.txt写法如下:
    User-agent: Googlebot
    Disallow:
    User-agent: *
    Disallow: /

    6如果我们禁止除百度外的一切搜索引擎索引我们的网站的话
    robots.txt写法如下:
    User-agent: Baiduspider
    Disallow:
    User-agent: *
    Disallow: /

    7如果我们需要禁止蜘蛛访问某个目录,比如禁止admin、css、images等目录被索引的话
    robots.txt写法如下:
    User-agent: *
    Disallow: /css/
    Disallow: /admin/
    Disallow: /images/

    8如果我们允许蜘蛛访问我们网站的某个目录中的某些特定网址的话
    robots.txt写法如下:
    User-agent: *
    Allow: /css/my
    Allow: /admin/html
    Allow: /images/index
    Disallow: /css/
    Disallow: /admin/
    Disallow: /images/

    9我们看某些网站的robots.txt里的Disallow或者Allow里会看很多的符号,比如问号星号什么的,如果使用“*”,主要是限制访问某个后缀的域名,禁止访问/html/目录下的所有以”.htm”为后缀的URL(包含子目录)。
    robots.txt写法如下:
    User-agent: *
    Disallow: /html/*.htm

    10如果我们使用“$”的话是仅允许访问某目录下某个后缀的文件
    robots.txt写法如下:
    User-agent: *
    Allow: .asp$
    Disallow: /

    11如果我们禁止索引网站中所有的动态页面(这里限制的是有“?”的域名,例如index.asp?id=1)
    robots.txt写法如下:
    User-agent: *
    Disallow: /*?*
    有些时候,我们为了节省服务器资源,需要禁止各类搜索引擎来索引我们网站上的图片,这里的办法除了使用“Disallow: /images/”这样的直接屏蔽文件夹的方式之外,还可以采取直接屏蔽图片后缀名的方式。

    12 如果我们禁止Google搜索引擎抓取我们网站上的所有图片(如果你的网站使用其他后缀的图片名称,在这里也可以直接添加)
    robots.txt写法如下:
    User-agent: Googlebot
    Disallow: .jpg$
    Disallow: .jpeg$
    Disallow: .gif$
    Disallow: .png$
    Disallow: .bmp$

    13如果我们禁止百度搜索引擎抓取我们网站上的所有图片的话
    robots.txt写法如下:
    User-agent: Baiduspider
    Disallow: .jpg$
    Disallow: .jpeg$
    Disallow: .gif$
    Disallow: .png$
    Disallow: .bmp$

    14除了百度之外和Google之外,禁止其他搜索引擎抓取你网站的图片
    (注意,在这里为了让各位看的更明白,因此使用一个比较笨的办法——对于单个搜索引擎单独定义。)
    robots.txt写法如下:
    User-agent: Baiduspider
    Allow: .jpeg$
    Allow: .gif$
    Allow: .png$
    Allow: .bmp$
    User-agent: Googlebot
    Allow: .jpeg$
    Allow: .gif$
    Allow: .png$
    Allow: .bmp$
    User-agent: *
    Disallow: .jpg$
    Disallow: .jpeg$
    Disallow: .gif$
    Disallow: .png$
    Disallow: .bmp$

    15仅仅允许百度抓取网站上的“JPG”格式文件
    (其他搜索引擎的办法也和这个一样,只是修改一下搜索引擎的蜘蛛名称即可)
    robots.txt写法如下:
    User-agent: Baiduspider
    Allow: .jpg$
    Disallow: .jpeg$
    Disallow: .gif$
    Disallow: .png$
    Disallow: .bmp$

    16仅仅禁止百度抓取网站上的“JPG”格式文件
    robots.txt写法如下:
    User-agent: Baiduspider
    Disallow: .jpg$

    17如果 ? 表示一个会话 ID,您可排除所有包含该 ID 的网址,确保 Googlebot 不会抓取重复的网页。但是,以 ? 结尾的网址可能是您要包含的网页版本。在此情况下,沃恩可将与 Allow 指令配合使用。
    robots.txt写法如下:
    User-agent:*
    Allow:/*?$
    Disallow:/*?
    Disallow:/ *?
    一行将拦截包含 ? 的网址(具体而言,它将拦截所有以您的域名开头、后接任意字符串,然后是问号 (?),而后又是任意字符串的网址)。Allow: /*?$ 一行将允许包含任何以 ? 结尾的网址(具体而言,它将允许包含所有以您的域名开头、后接任意字符串,然后是问号 (?),问号之后没有任何字符的网址)。

    18如果我们想禁止搜索引擎对一些目录或者某些URL访问的话,可以截取部分的名字
    robots.txt写法如下:
    User-agent:*
    Disallow: /plus/feedback.php?

    No comments:

    Post a Comment

    如何设置博客文章目录

    下面介绍如何用纯代码和wordpress插件设置文章目录: 一、文章目录代码 把下面的代码放到主题文件 functions.php 文件里即可: //文章目录 function article_index($content) { $matches = arra...