Robots.txt 中的多个用户代理

8
在 robots.txt 文件中,我有以下几个部分:
User-Agent: Bot1
Disallow: /A

User-Agent: Bot2
Disallow: /B

User-Agent: *
Disallow: /C
< p >语句 < code >Disallow:c 对Bot1和Bot2可见吗?< /p >

多个用户代理 robots.txt请问如何在 robots.txt 文件中添加多个用户代理行?我想要为不同的搜索引擎和机器人设置不同的规则。谢谢! - MarcDefiant
@MarcDefiant 这个结果不是与这里所要求的相反吗? - GoodSp33d
2个回答

10

tl;dr: 不,Bot1和Bot2将愉快地爬取以C开头的路径。

每个机器人只能遵守最多单个记录(块)

原始规范

原始规范中,它说:

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

过期的RFC草案

原始规范,包括一些添加内容(例如Allow),成为RFC的草案,但从未被接受/发布。在3.2.1 User-agent line中,它说:

The robot必须遵守/robots.txt中第一个包含机器人名称标记作为子字符串的User-Agent行的记录。名称比较不区分大小写。如果不存在这样的记录,则应该遵守具有“*”值的User-agent行的第一条记录(如果存在)。如果没有记录满足任何条件,或者根本没有记录,则访问是无限制的。因此,它确认了原始规范的解释。
实现
例如,Google给出一个示例,似乎遵循规范:

Each section in the robots.txt file is separate and does not build upon previous sections. For example:

User-agent: *
Disallow: /folder1/

User-Agent: Googlebot
Disallow: /folder2/

In this example only the URLs matching /folder2/ would be disallowed for Googlebot.


-2

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

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

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


关于 Google 的问题,如果有一个 User-Agent:GooglebotUser-Agent:* 的条目,Google 在爬行时会同时检查这两个部分吗? - GoodSp33d
我认为这不正确。Bot1Bot2应该忽略最后一个块(User-Agent: *)。 - unor
1
@2-Stroker:不,Google只会检查user-agent: googlebot部分(即“最具体”部分),user-agent: *部分将被忽略。 - MrWhite
1
@moobot:“这就是我说的。”- 但你似乎说了完全相反的话,这似乎不正确? - MrWhite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接