在 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 的 User-agent 行中它说:
机器人必须遵守 /robots.txt 中包含 User-Agent 行的第一条记录,该行的值包含机器人的名称标记作为子字符串。名称比较不区分大小写。如果不存在这样的记录,它应该服从带有“*”值的用户代理行的第一条记录,如果存在的话。如果没有记录满足任一条件,或者根本不存在任何记录,则访问是无限制的。
所以它证实了原始规范的解释。
例如,谷歌给出了一个似乎遵循规范的例子:
robots.txt 文件中的每个部分都是独立的,并不建立在前面的部分之上。例如:
User-agent: * Disallow: /folder1/ User-Agent: Googlebot Disallow: /folder2/
在此示例中,只有与 Googlebot 匹配的 URL
/folder2/
是不允许的。
如果机器人遵守 robots.txt 文件,是的,该语句将可见,因此它们将无法抓取 /c。
用户代理后的通配符 (*) 表示所有用户代理。
但是请记住,并非所有机器人都遵守 robots.txt