Robots.txt指南

Robots.txt指南
当搜索引擎访问一个网站时,它首先会检查该网站的根域下是否有一个叫做robots.txt的纯文本文件。Robots.txt文件用于限定搜索引擎对其 网站的访问范围,即告诉搜索引擎网站中哪些文件是允许它进行检索(下载)的。这就是大家在网络上常看到的“拒绝Robots访问标准”(Robots Exclusion Standard)。下面我们简称RES。
Robots.txt文件的格式:
  Robots.txt文件的格式比较特殊,它由记录组成。这些记录通过空行分开。其中每条记录均由两个域组成:
  1) 一个User-Agent(用户代理)字符串行;
  2) 若干Disallow字符串行。
  记录格式为: ":"
  下面我们分别对这两个域做进一步说明。
User-agent(用户代理):
  User-agent行(用户代理行) 用于指定搜索引擎robot的名字,以Google的检索程序Googlebot为例,有:User-agent: Googlebot
  一个robots.txt中至少要有一条User-agent记录。如果有多条User-agent记录,则说明有多个robot会受到RES标准的限制。当然了,如果要指定所有的robot,只需用一个通配符"*"就搞定了,即:User-agent: *
Disallow(拒绝访问声明):
   在Robots.txt文件中,每条记录的第二个域是Disallow:指令行。这些Disallow行声明了该网站中不希望被访问的文件和(或)目 录。例如"Disallow: email.htm"对文件的访问进行了声明,禁止Spiders下载网站上的email.htm文件。而"Disallow: /cgi-bin/"则对cgi-bin目录的访问进行了声明,拒绝Spiders进入该目录及其子目录。Disallow声明行还具有通配符功能。例如 上例中"Disallow: /cgi-bin/"声明了拒绝搜索引擎对cgi-bin目录及其子目录的访问,而"Disallow:/bob"则拒绝搜索引擎对/bob.html和 /bob/index.html的访问(即无论是名为bob的文件还是名为bob的目录下的文件都不允许搜索引擎访问)。Disallow记录如果留空, 则说明该网站的所有部分都向搜索引擎开放。
空格 & 注释
  在robots.txt文件中,凡以"#"开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。但大家需要注意两个问题:
   1) RES标准允许将注解内容放在指示行的末尾,但这种格式并不是所有的Spiders都能够支持。譬如,并不是所有的Spiders都能够正确理 解"Disallow: bob #comment"这样一条指令。有的Spiders就会误解为Disallow的是"bob#comment"。最好的办法是使注解自成一行。
  2) RES标准允许在一个指令行的开头存在空格,象"Disallow: bob #comment",但我们也并不建议大家这么做。
Robots.txt文件的创建:
   需要注意的是,应当在UNIX命令行终端模式下创建Robots.txt纯文本文件。好的文本编辑器一般都能够提供UNIX模式功能,或者你的FTP客 户端软件也“应该”能够替你转换过来。如果你试图用一个没有提供文本编辑模式的HTML编辑器来生成你的robots.txt纯文本文件,那你可就是瞎子 打蚊子——白费力气了。
对RES标准的扩展:
  尽管已经提出了一些扩展标准,如Allow行或Robot版本控制(例如应该忽略大小写和版本号),但尚未得到RES工作组的正式批准认可。
附录I. Robots.txt用法举例:
  使用通配符"*",可设置对所有robot的访问权限。
  User-agent: *
  Disallow:
  表明:允许所有搜索引擎访问网站下的所有内容。
  User-agent: *
  Disallow: /
  表明:禁止所有搜索引擎对网站下所有网页的访问。
  User-agent: *
  Disallow: /cgi-bin/Disallow: /images/
  表明:禁止所有搜索引擎进入网站的cgi-bin和images目录及其下所有子目录。需要注意的是对每一个目录必须分开声明。
  User-agent: Roverdog
  Disallow: /
  表明:禁止Roverdog访问网站上的任何文件。
  User-agent: Googlebot
Disallow: cheese.htm
  表明:禁止Google的Googlebot访问其网站下的cheese.htm文件。
  上面介绍了一些简单的设置,对于比较复杂的设置,可参看一些大型站点如CNN或Looksmart的robots.txt文件(www.cnn.com/robots.txt‚ www.looksmart.com/robots.txt)
附录II. 相关robots.txt文章参考:
  1. Robots.txt常见问题解析
  2. Robots Meta Tag的使用
  3. Robots.txt检测程序
Robots.txt常见问题解析:
   我们开发了一个针对robots.txt文件的“验检程序”,同时又设计了一个搜索程序,专门下载robots.txt文件,以此对新推出的这个 “robots.txt验检程序”进行测试。在对DMOZ(ODP)中所链接的站点进行遍历,共计检索240万个站点后,我们总共找到了大概75k的 robots.txt文件。
  在这些robots.txt文件中,我们发现了大量的而且是形形色色的问题。有超过5%的robots.txt文件使用了错误格式,有超过2%的文件由于使用的是极其拙劣的格式而导致无法为任何SPIDER读取。我们将发现的一些问题在下面列出来供大家参考借鉴:
错误1—语法混用
  例如:
  User-agent: *
  Disallow: scooter
  正确语法应为:
  User-agent: scooter
  Disallow: *
错误2—一行Disallow声明多个目录
  这是一个比较常见的错误。我们发现很多网站在其robots.txt中,在一个Disallow指令行中放入了多个目录。譬如:Disallow: /css/ /cgi-bin/images/
绝大多数的spiders对上述声明行都无法做出正确的解析,有些Spiders会忽略其空格而解析为/css//cgi-bin//images/,或只解析/images/或/css/,或者根本不予解析。
正确的语法应为:
  Disallow: /css/
  Disallow: /cgi-bin/
  Disallow: /images/
错误3—在DOS模式下编辑robots.txt文件
   这也是一个比较常见的错误。正确的做法应该是在UNIX模式下编辑你的robots.txt文件并以ASCII码格式上传。显然并非所有的FTP客户端 软件都能够天衣无缝地将文件格式转换为UNIX命令行终端,所以在编辑robots.txt文件时,一定要确保你的文本编辑器是在UNIX模式下。
错误4—在指示行末尾加注
  在robots.txt文件中,凡以"#"开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。例如:Disallow: /cgi-bin/ # this bans robots from our cgi-bin
   虽然根据RES标准,在指示行的末尾加注是可行的,但这种格式在过去却并非所有的Spiders都能够支持,有些Spiders干脆就把整个句子视为注 解内容直接跳过去不读。当然我们知道现如今搜索引擎基本上都能够支持这种格式,不过—仍有可能无法被某些搜索引擎正确解读,你冒得起这个险吗?我们建议在 编辑robots.txt文件时,最好让注解自成一行。
错误5—指令行前有空格
  例如"Disallow: /cgi-bin/",虽然RES标准并未对这种格式予以特别说明,但我们对这种格式是持极力反对态度的。同样的问题摆在你面前你冒得起无法被Spiders正确解读的险吗?
错误6--404重定向至另一页面
   一般没有robots.txt的网站会将对robots.txt文件的调用请求转至另一页面。这种重定向通常不会产生服务器状态错误或重定向状态信息。 然而因为是Spiders自己决定它看到的是robots.txt文件还是一个.html文件。虽然理论上应该不会有什么问题,不过为了保险起见,不妨在 你服务器的顶级目录下放一个空的robots.txt文件。在www.google.com/bot.html下,也提供了相同的建议—“如欲避免网络服 务器日志中的出错信息'找不到文件',可在其根域下创建一个空的robots.txt文件。”
错误7—声明自相矛盾
  例如:
  USER-AGENT: EXCITE
  DISALLOW:
  虽然RES标准忽略大小写(Case Sensitive),但目录和文件名却是大小写敏感的。所以对于"USER-AGENT"和"DISALLOW"指令,用大小写都是可以的。但对于所声明的目录或文件名却一定要注意大小写的问题。
错误8—列出所有文件
  这也是一种常见错误,不厌其烦地将目录下文件全数列出。例如:
  Disallow: /AL/Alabama.html
  Disallow: /AL/AR.html
  Disallow: /Az/AZ.html
  Disallow: /Az/bali.html
  Disallow: /Az/bed-breakfast.html
  其实,上面这么多声明行只需用目录选项来替代:
  Disallow: /AL
  Disallow: /Az
  需要注意的是:反斜杠"/"表示禁止搜索引擎进入该目录。如果只有几十个文件需要设置访问权限,那倒也无可厚非。问题是我们发现有一个robots.txt文件中列出了有400k,多达4‚000个文件。我们只是纳闷看到这么多声明,有多少Spiders会掉头而去。
错误9—自创ALLOW指令
  没有ALLOW指令,只有DISALLOW指令!我们发现有这样的用法:
  User-agent: Spot
  Disallow: /john/
  allow: /jane/
  正确写法应为:
  User-agent: Spot
  Disallow: /john/
  Disallow:
错误10—对声明的目录无反斜杠标识
  例如我们发现有这样的例子:
  User-agent: Spot
  Disallow: john
  对这样的记录Spider该怎么反应?按照RES标准,Spider会将名为"john"的文件和名为"john"的目录都DISALLOW。所以要记得使用"/"来标识所声明的路径(目录)。
   我们还发现,有些网站的优化工作做得真彻底,竟然在其robots.txt中也放了关键词(费解,不明白他们怎么想的)。这些人一定是把他们的 robots.txt纯文本文件当作是html文件了。(要记住:在FrontPage下是不可能正确创建robots.txt文件的)
错误11—网络服务器端的错误配置
为什么对robots.txt文件的调用请求会产生一个二进制文件?只有网络服务器或FTP客户端软件错误设置的情况下才可能发生这种错误。建议大家定期检查自己的robots.txt文件(http://www.mydomain.com/robots.txt)。
服务器/域名“农场”
   搜索引擎检测服务器或域名“农场”(即包含巨量站点)的一个简单途径是看它们的robots.txt。我们发现规模在400到500个域名的大型域名 “农场”,其“库”内站点使用都是同一个robots.txt文件。这也就相当于告诉搜索引擎这些使用同一robots.txt文件的站点是相关联的。
Google率先支持通配符:
  Google是第一家能够支持robots.txt中通配符文件扩展名的搜索引擎。例如:
  User-agent: googlebot
  Disallow: *.cgi
  不过注意了,由于目前只有Google能够支持这种格式,所以”USER-AGENT”只能是“Googlebot”。

转载于:https://www.cnblogs.com/top5/archive/2009/09/17/1568319.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fwrite函数的用法示例_C语言中的fwrite()函数(带有示例)

fwrite函数的用法示例C中的fwrite()函数 (fwrite() function in C) Prototype: 原型: size_t fwrite(void *buffer, size_t length, size_t count, FILE *filename);Parameters: 参数: void *buffer, size_t length, size_t count, FILE *filenameRetu…

标题:递增三元组

标题&#xff1a;递增三元组 给定三个整数数组 A [A1, A2, … AN], B [B1, B2, … BN], C [C1, C2, … CN]&#xff0c; 请你统计有多少个三元组(i, j, k) 满足&#xff1a; 1 < i, j, k < NAi < Bj < Ck 【输入格式】 第一行包含一个整数N。 第二行包含N个整…

伙伴算法、slab机制、内存管理函数

文章目录1 伙伴算法页框操作alloc_pages()2 slabslab机制要解决的问题使用高速缓存3 内存管理函数kmallockzallocvmallocvzalloc区别参考文章内核使用struct page结构体描述每个物理页&#xff0c;也叫页框。内核在很多情况下&#xff0c;需要申请连续的页框&#xff0c;而且数…

eval 函数 代替函数_eval()函数以及JavaScript中的示例

eval 函数 代替函数eval()函数 (eval() function) eval() function is a predefined global function in JavaScript and it is used to evaluate (execute) an expression, which is passed to the function as a parameter. It can also evaluate any JavaScript code. eval(…

F# ≥ C#(活动模式 和枚举)

F#提供了一个叫"活动模式"的有趣功能。它把输入的数据转换成其他不同的东西。 一个有趣的使用实例就是代替枚举。但我编程枚举的时候&#xff0c;我总不高兴去链接枚举项到它的定义。例如&#xff0c;下面的枚举定义了 数字枚举&#xff0c; enum Numbers{Odd,Even,}…

关于java的classpath设置

今天晚上实验室的另一个人在编译一个java程序&#xff0c;需要用到一个jar文件&#xff0c;所以在命令行编译的时候需要添加jar的路径&#xff0c;例如&#xff1a; java -classpath demo.jar hello 但是设置了path之后java就不会搜索当前目录&#xff0c;也就是所如果hello在当…

C语言uthash的用法

文章目录1 定义一个哈希表键值UT_hash_handle2 哈希操作声明添加查找删除获取哈希表中元素个数迭代排序3 案例键的使用官网解释&#xff1a;https://troydhanson.github.io/uthash/userguide.html 在使用之前&#xff0c;我们必须包含uthash.h的头文件&#xff0c;你需要将该头…

Javascript Paste Keyboard Shortcuts Hijack

author : kj021320 team : I.S.T.O 这样的攻击手段也算是极其无耻 猥琐之极! 所以防御措施一定要做好 首先说一下通过Javascript Paste Keyboard Shortcuts Hijack能做什么???能够读取你本地机器任何文件! 没错!也就是说 你中了任何一个XSS 加上你按了粘贴快捷键后,你就有可…

python 生成器表达式_Python中的列表理解与生成器表达式

python 生成器表达式The list is a collection of different types of elements and there are many ways of creating a list in Python. 该列表是不同类型元素的集合&#xff0c;并且有许多方法可以在Python中创建列表。 清单理解 (List Comprehension) List comprehension…

Javaweb---监听器

1.什么是监听器 监听器就是监听某个对象的状态变化的组件。 事件源&#xff1a;被监听的对象 ----- 三个域对象 request session servletContext 监听器&#xff1a;监听事件源对象 事件源对象的状态的变化都会触发监听器 ---- 62 注册监听器&#xff1a;将监听器与事件源进行…

Linux中的Ramdisk和Initrd

Ramdisk简介先简单介绍一下ramdisk&#xff0c;Ramdisk是虚拟于RAM中的盘(Disk)。对于用户来说&#xff0c;能把RAM disk和通常的硬盘分区&#xff08;如/dev/hda1&#xff09;同等对待来使用&#xff0c;例如&#xff1a;redice # mkfs.ext2 /dev/ram0mke2fs 1.38 (30-Jun-200…

slab下kmalloc内核函数实现

文章目录kmalloc的整体实现获取高速缓存高速缓存获取index总结https://blog.csdn.net/qq_41683305/article/details/124554490&#xff0c;在这篇文章中&#xff0c;我们介绍了伙伴算法、slab机制和常见的内存管理函数&#xff0c;接下来&#xff0c;我们看看kmalloc内核函数的…

PHP array_merge_recursive()函数与示例

PHP array_merge_recursive()函数 (PHP array_merge_recursive() function) array_merge_recursive() function is used to merge two or more arrays, it returns a new array with merged elements. The only difference between array_merge() and array_merge_recursive() …

标题:三羊献瑞

标题&#xff1a;观察下面的加法算式&#xff1a; 其中&#xff0c;相同的汉字代表相同的数字&#xff0c;不同的汉字代表不同的数字。 请你填写“三羊献瑞”所代表的4位数字&#xff08;答案唯一&#xff09;&#xff0c;不要填写任何多余内容。 思路分析&#xff1a; 首先…

hdu 1069

地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1069 题意&#xff1a;给定若干个木块长宽高&#xff0c;长宽高可以自己调整&#xff0c;求堆积起来最高的高度。 mark&#xff1a;枚举所有木块长宽高可能情况&#xff0c;简单dp。 代码&#xff1a; #include <…

简明 Python 编程规范

简明 Python 编程规范编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- 。设置编辑器&#xff0c;默认保存为 utf-8 格式。注释 业界普遍认同 Python 的注释分为两种的概念&#xff0c;一种是由 # 开头的“真正的”注释&#xff0c;另一种是 docstri…

进程虚拟地址管理

文章目录1 地址分布实际使用中的内存区域2 进程的虚拟地址描述用户空间mmap线程之间共享内存地址的实现机制1 地址分布 现在采用虚拟内存的操作系统通常都使用平坦地址空间&#xff0c;平坦地址空间是指地址空间范围是一个独立的连续空间&#xff08;比如&#xff0c;地址从0扩…

java两个文件夹比较路径_比较Java中两个文件的路径

java两个文件夹比较路径Given the paths of the two files and we have two compare the paths of the files in Java. 给定两个文件的路径&#xff0c;我们有两个比较Java中文件的路径。 Comparing paths of two files 比较两个文件的路径 To compare the paths of two file…

标题:加法变乘法

标题&#xff1a;我们都知道&#xff1a;123 … 49 1225 现在要求你把其中两个不相邻的加号变成乘号&#xff0c;使得结果为2015 比如&#xff1a; 123…10*1112…27*2829…49 2015 就是符合要求的答案。 请你寻找另外一个可能的答案&#xff0c;并把位置靠前的那个乘号左…

C# winform对话框用法大全收藏

对话框中我们常用了以下几种&#xff1a; 1、文件对话框(FileDialog) 它又常用到两个&#xff1a; 打开文件对话框(OpenFileDialog) 保存文件对话(SaveFileDialog) 2、字体对话框(FontDialog) 3、颜色对话框(&#xff23;olorDialog) 4、打印预浏对话框(PrintPreviewDialog) 5、…