8

在 robots.txt 文件中,我有以下部分

User-Agent: Bot1
Disallow: /A

User-Agent: Bot2
Disallow: /B

User-Agent: *
Disallow: /C

声明Disallow:c对 Bot1 和 Bot2 可见吗?

4

2 回答 2

10

tl;dr:不,Bot1 和 Bot2 会愉快地爬行以C.

每个机器人最多只遵守一条记录(块)

原始规格

原始规范中它说:

如果值为“*”,则该记录描述了未匹配任何其他记录的任何机器人的默认访问策略。

已过期的 RFC 草案

最初的规范,包括一些补充(如Allow)成为 RFC 的草案,但从未被接受/发布。在3.2.1 的 User-agent 行中它说:

机器人必须遵守 /robots.txt 中包含 User-Agent 行的第一条记录,该行的值包含机器人的名称标记作为子字符串。名称比较不区分大小写。如果不存在这样的记录,它应该服从带有“*”值的用户代理行的第一条记录,如果存在的话。如果没有记录满足任一条件,或者根本不存在任何记录,则访问是无限制的。

所以它证实了原始规范的解释。

实现

例如,谷歌给出了一个似乎遵循规范的例子:

robots.txt 文件中的每个部分都是独立的,并不建立在前面的部分之上。例如:

User-agent: *
Disallow: /folder1/

User-Agent: Googlebot
Disallow: /folder2/

在此示例中,只有与 Googlebot 匹配的 URL/folder2/是不允许的。

于 2013-02-06T18:37:51.007 回答
-2

如果机器人遵守 robots.txt 文件,是的,该语句将可见,因此它们将无法抓取 /c。

用户代理后的通配符 (*) 表示所有用户代理。

但是请记住,并非所有机器人都遵守 robots.txt

于 2013-02-06T10:36:13.897 回答