在robots.txt文件我有以下几个部分
User-Agent: Bot1
Disallow: /A
User-Agent: Bot2
Disallow: /B
User-Agent: *
Disallow: /C
将声明Disallow:c
是可见的Bot1&Bot2?
在robots.txt文件我有以下几个部分
User-Agent: Bot1
Disallow: /A
User-Agent: Bot2
Disallow: /B
User-Agent: *
Disallow: /C
将声明Disallow:c
是可见的Bot1&Bot2?
TL; DR:否,Bot1和Bot2将愉快地抓取开始路径C
。
每个机器人永远只向符合最多的单个记录(块) 。
在最初的规范 ,它说:
如果该值是“*”,记录描述已不匹配任何其他记录的任何机械手的默认访问策略。
原来的规范,包括一些附加条件(如Allow
)成为RFC草案,但从来没有被录取/发表。 在3.2.1用户代理线 ,它说:
机器人必须服从于/robots.txt的第一条记录包含user-agent行值中包含机器人作为一个子字符串的名称标记。 这个名字比较是不区分大小写。 如果没有这样的记录,则它应该服从与用户代理行的第一个记录以“*”的值,如果存在的话。 如果没有记录满足任一条件,或没有记录存在于一切,访问是无限的。
因此,它证实了原规范的解释。
谷歌为例, 给出了一个例子 ,似乎遵循规范:
在robots.txt文件中的每个部分都是独立的,不建立在前面的章节。 例如:
User-agent: * Disallow: /folder1/ User-Agent: Googlebot Disallow: /folder2/
在这个例子中仅网址匹配
/folder2/
将被禁止为Googlebot。
如果机器人遵守robots.txt文件,是该语句将是可见的,所以他们将无法抓取/ C。
用户代理后的通配符(*)表示所有的用户代理。
但是记住不是所有的机器人服从的robots.txt