【问题标题】:Multiple User Agents in Robots.txtRobots.txt 中的多个用户代理
【发布时间】:2013-01-20 13:04:20
【问题描述】:

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

User-Agent: Bot1
Disallow: /A

User-Agent: Bot2
Disallow: /B

User-Agent: *
Disallow: /C

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

【问题讨论】:

标签: seo robots.txt


【解决方案1】:

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

每个机器人最多只能遵守a single record (block)

原始规格

original specification 中写道:

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

已过期的 RFC 草案

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

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

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

实现

Google,例如,gives an example 似乎遵循规范:

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

User-agent: *
Disallow: /folder1/

User-Agent: Googlebot
Disallow: /folder2/

在此示例中,只有与 /folder2/ 匹配的网址才会被 Googlebot 禁止使用。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 好的,w.r.t Google,如果有 User-Agent:GooglebotUser-Agent:* 的条目,Google 会在抓取时检查这两个部分吗?
    • don't 认为这是正确的。 Bot1Bot2 应该忽略最后一个块 (User-Agent: *)。
    • @2-Stroker:不,Google 只会检查 user-agent: googlebot 部分(即“最具体”部分),user-agent: * 部分将被忽略。
    • @moobot:“我就是这么说的。” - 但你的说法似乎完全相反,这似乎不正确?
    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 2012-12-13
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多