robots.txt 基本介绍

本贴最后更新于 1231 天前,其中的信息可能已经时过境迁

在国内,网站管理者似乎对 robots.txt 并没有引起多大重视,应一些朋友之请求,今天想通过这篇文章来简单谈一下 robots.txt 的写作。

robots.txt 基本介绍

robots.txt 是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被 robots 访问的部分,或者指定搜索引擎只收录指定的内容。

当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该站点根目录下是否存在 robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索机器人就沿着链接抓取。

另外,robots.txt 必须放置在一个站点的根目录下,而且文件名必须全部小写。

robots.txt 写作语法

首先,我们来看一个 robots.txt 范例:http://www.seovip.cn/robots.txt

访问以上具体地址,我们可以看到 robots.txt 的具体内容如下:

Robots.txt file from http://www.seovip.cn

All robots will spider the domain

User-agent: *
Disallow:

以上文本表达的意思是允许所有的搜索机器人访问 www.seovip.cn 站点下的所有文件。

具体语法分析:其中#后面文字为说明信息;User-agent:后面为搜索机器人的名称,后面如果是*,则泛指所有的搜索机器人;Disallow:后面为不允许访问的文件目录。

下面,我将列举一些 robots.txt 的具体用法:

允许所有的 robot 访问

User-agent: *
Disallow:

或者也可以建一个空文件 "/robots.txt" file

禁止所有搜索引擎访问网站的任何部分

User-agent: *
Disallow: /

禁止所有搜索引擎访问网站的几个部分(下例中的 01、02、03 目录)

User-agent: *
Disallow: /01/
Disallow: /02/
Disallow: /03/

禁止某个搜索引擎的访问(下例中的 BadBot)

User-agent: BadBot
Disallow: /

只允许某个搜索引擎的访问(下例中的 Crawler)

User-agent: Crawler
Disallow:

User-agent: *
Disallow: /

另外,我觉得有必要进行拓展说明,对 robots meta 进行一些介绍:

Robots META 标签则主要是针对一个个具体的页面。和其他的 META 标签(如使用的语言、页面的描述、关键词等)一样,Robots META 标签也是放在页面的 <head></head> 中,专门用来告诉搜索引擎 ROBOTS 如何抓取该页的内容。

Robots META 标签的写法:

Robots META 标签中没有大小写之分,name=”Robots”表示所有的搜索引擎,可以针对某个具体搜索引擎写为 name=”BaiduSpider”。 content 部分有四个指令选项:index、noindex、follow、nofollow,指令间以“,”分隔。

INDEX 指令告诉搜索机器人抓取该页面;

FOLLOW 指令表示搜索机器人可以沿着该页面上的链接继续抓取下去;

Robots Meta 标签的缺省值是 INDEX 和 FOLLOW,只有 inktomi 除外,对于它,缺省值是 INDEX,NOFOLLOW。

这样,一共有四种组合:

<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">
<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">
<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">

其中

<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"> 可以写成 <META NAME="ROBOTS" CONTENT="ALL">;

<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"> 可以写成 <META NAME="ROBOTS" CONTENT="NONE">

目前看来,绝大多数的搜索引擎机器人都遵守 robots.txt 的规则,而对于 Robots META 标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎 GOOGLE 就完全支持,而且 GOOGLE 还增加了一个指令“archive”,可以限制 GOOGLE 是否保留网页快照。例如:

<META NAME="googlebot" CONTENT="index,follow,noarchive">

表示抓取该站点中页面并沿着页面中链接抓取,但是不在 GOOLGE 上保留该页面的网页快照。

如何使用 robots.txt

robots.txt 文件对抓取网络的搜索引擎漫游器(称为漫游器)进行限制。这些漫游器是自动的,在它们访问网页前会查看是否存在限制其访问特定网页的 robots.txt 文件。如果你想保护网站上的某些内容不被搜索引擎收入的话,robots.txt 是一个简单有效的工具。这里简单介绍一下怎么使用它。

如何放置 Robots.txt 文件

robots.txt 自身是一个文本文件。它必须位于域名的根目录中并 被命名为"robots.txt"。位于子目录中的 robots.txt 文件无效,因为漫游器只在域名的根目录中查找此文件。例如,http://www.example.com/robots.txt 是有效位置,http://www.example.com/mysite/robots.txt 则不是。

这里举一个 robots.txt 的例子:

User-agent: *

Disallow: /cgi-bin/

Disallow: /tmp/

Disallow: /~name/
使用 robots.txt 文件拦截或删除整个网站

要从搜索引擎中删除您的网站,并防止所有漫游器在以后抓取您的网站,请将以下 robots.txt 文件放入您服务器的根目录:

User-agent: *

Disallow: /

要只从 Google 中删除您的网站,并只是防止 Googlebot 将来抓取您的网站,请将以下 robots.txt 文件放入您服务器的根目录:
User-agent: Googlebot

Disallow: /

每个端口都应有自己的 robots.txt 文件。尤其是您通过 http 和 https 托管内容的时候,这些协议都需要有各自的 robots.txt 文件。例如,要让 Googlebot 只为所有的 http 网页而不为 https 网页编制索引,应使用下面的 robots.txt 文件。

对于 http 协议 (http://yourserver.com/robots.txt):

User-agent: *

Allow: /

对于 https 协议 (https://yourserver.com/robots.txt):

User-agent: *

Disallow: /

允许所有的漫游器访问您的网页
User-agent: *

Disallow:

(另一种方法: 建立一个空的 "/robots.txt" 文件, 或者不使用 robot.txt。)

使用 robots.txt 文件拦截或删除网页

您可以使用 robots.txt 文件来阻止 Googlebot 抓取您网站上的网页。 例如,如果您正在手动创建 robots.txt 文件以阻止 Googlebot 抓取某一特定目录下(例如,private)的所有网页,可使用以下 robots.txt 条目:
User-agent: Googlebot

Disallow: /private
要阻止 Googlebot 抓取特定文件类型(例如,.gif)的所有文件,可使用以下 robots.txt 条目:
User-agent: Googlebot

Disallow: /*.gif$
要阻止 Googlebot 抓取所有包含 ? 的网址(具体地说,这种网址以您的域名开头,后接任意字符串,然后是问号,而后又是任意字符串),可使用以下条目:
User-agent: Googlebot

Disallow: /*?

尽管我们不抓取被 robots.txt 拦截的网页内容或为其编制索引,但如果我们在网络上的其他网页中发现这些内容,我们仍然会抓取其网址并编制索引。因此,网页网址及其他公开的信息,例如指 向该网站的链接中的定位文字,有可能会出现在 Google 搜索结果中。不过,您网页上的内容不会被抓取、编制索引和显示。

作为网站管理员工具的一部分,Google 提供了 robots.txt 分析工具。它可以按照 Googlebot 读取 robots.txt 文件的相同方式读取该文件,并且可为 Google user-agents(如 Googlebot)提供结果。我们强烈建议您使用它。 在创建一个 robots.txt 文件之前,有必要考虑一下哪些内容可以被用户搜得到,而哪些则不应该被搜得到。 这样的话,通过合理地使用 robots.txt, 搜索引擎在把用户带到您网站的同时,又能保证隐私信息不被收录。

误区一:我的网站上的所有文件都需要蜘蛛抓取,那我就没必要在添加 robots.txt 文件了。反正如果该文件不存在,所有的搜索蜘蛛将默认能够访问网站上所有没有被口令保护的页面。
  每当用户试图访问某个不存在的 URL 时,服务器都会在日志中记录 404 错误(无法找到文件)。每当搜索蜘蛛来寻找并不存在的 robots.txt 文件时,服务器也将在日志中记录一条 404 错误,所以你应该做网站中添加一个 robots.txt。

  误区二:在 robots.txt 文件中设置所有的文件都可以被搜索蜘蛛抓取,这样可以增加网站的收录率。

  网站中的程序脚本、样式表等文件即使被蜘蛛收录,也不会增加网站的收录率,还只会浪费服务器资源。因此必须在 robots.txt 文件里设置不要让搜索蜘蛛索引这些文件。

  具体哪些文件需要排除, 在 robots.txt 使用技巧一文中有详细介绍。

  误区三:搜索蜘蛛抓取网页太浪费服务器资源,在 robots.txt 文件设置所有的搜索蜘蛛都不能抓取全部的网页。

  如果这样的话,会导致整个网站不能被搜索引擎收录。

robots.txt 使用技巧

  1. 每当用户试图访问某个不存在的 URL 时,服务器都会在日志中记录 404 错误(无法找到文件)。每当搜索蜘蛛来寻找并不存在的 robots.txt 文件时,服务器也将在日志中记录一条 404 错误,所以你应该在网站中添加一个 robots.txt。

  2. 网站管理员必须使蜘蛛程序远离某些服务器上的目录——保证服务器性能。比如:大多数网站服务器都有程序储存在“cgi-bin”目录下,因此在 robots.txt 文件中加入“Disallow: /cgi-bin”是个好主意,这样能够避免将所有程序文件被蜘蛛索引,可以节省服务器资源。一般网站中不需要蜘蛛抓取的文件有:后台管理文件、程序脚本、附件、数据库文件、编码文件、样式表文件、模板文件、导航图片和背景图片等等。

  下面是 VeryCMS 里的 robots.txt 文件:

  User-agent: *

  Disallow: /admin/ 后台管理文件

  Disallow: /require/ 程序文件

  Disallow: /attachment/ 附件

  Disallow: /images/ 图片

  Disallow: /data/ 数据库文件

  Disallow: /template/ 模板文件

  Disallow: /css/ 样式表文件

  Disallow: /lang/ 编码文件

  Disallow: /script/ 脚本文件

  3. 如果你的网站是动态网页,并且你为这些动态网页创建了静态副本,以供搜索蜘蛛更容易抓取。那么你需要在 robots.txt 文件里设置避免动态网页被蜘蛛索引,以保证这些网页不会被视为含重复内容。

  4. robots.txt 文件里还可以直接包括在 sitemap 文件的链接。就像这样:

  Sitemap: sitemap.xml

  目前对此表示支持的搜索引擎公司有 Google, Yahoo, Ask and MSN。而中文搜索引擎公司,显然不在这个圈子内。这样做的好处就是,站长不用到每个搜索引擎的站长工具或者相似的站长部分,去提交自己的 sitemap 文件,搜索引擎的蜘蛛自己就会抓取 robots.txt 文件,读取其中的 sitemap 路径,接着抓取其中相链接的网页。

  5. 合理使用 robots.txt 文件还能避免访问时出错。比如,不能让搜索者直接进入购物车页面。因为没有理由使购物车被收录,所以你可以在 robots.txt 文件里设置来阻止搜索者直接进入购物车页面。

推荐网站:神奇的工作室

推荐网站:野生程序员

推荐公众号:野生程序员基地:yscxyjd

image.png

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • OnlyOffice
    4 引用 • 16 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 52 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 702 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 357 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    5 引用 • 13 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    76 引用 • 390 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 313 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 189 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 186 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖
  • sts
    2 引用 • 2 回帖 • 162 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    328 引用 • 1706 回帖 • 1 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 25 关注
  • 996
    13 引用 • 200 回帖 • 2 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 383 关注
  • 安装

    你若安好,便是晴天。

    131 引用 • 1184 回帖 • 1 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    215 引用 • 463 回帖
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 552 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 2 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 15 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    484 引用 • 906 回帖 • 1 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 524 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 11 关注