elh*_*bre 6 user-agent robots.txt
是否有可能在robots.txt中向多个机器人发出一条指令,而不必反复提及它?
例:
User-agent: googlebot yahoobot microsoftbot
Disallow: /boringstuff/
Run Code Online (Sandbox Code Playgroud)
IMS*_*SoP 10
实际上很难给出明确的答案,因为robots.txt没有一个定义明确的标准,而且很多文档都含糊不清或相互矛盾.
在谷歌的机器人理解格式的描述是相当全面的,包括这种略带乱码句子:
直接在组之后的多组起始线将遵循最终组起始线之后的组成员记录.
这似乎在摸索以下示例中显示的内容:
user-agent: e
user-agent: f
disallow: /g
Run Code Online (Sandbox Code Playgroud)
根据下面的解释,这构成了一个"组",不允许两个不同用户代理的相同URL.
因此,您想要的正确语法(关于任何机器人与Google的工作方式相同)将是:
User-agent: googlebot
User-agent: yahoobot
User-agent: microsoftbot
Disallow: /boringstuff/
Run Code Online (Sandbox Code Playgroud)
然而,正如Jim Mischel指出的那样,robots.txt文件中没有任何意义,一些机器人会正确解释,但其他人可能会窒息,所以最好采用重复块的"最小公分母",也许通过使用简单的"配方"和更新脚本动态生成文件.
我觉得原来的robots.txt规范定义不是含糊其辞:一个 User-agent
行只能有一个值。
记录(又名块,组)由行组成。每一行都有这样的形式
<field>:<optionalspace><value><optionalspace>
User-agent
是一个字段。它的价值:
此字段的值是记录描述其访问策略的机器人的名称。
它是单数(“机器人的名字”),而不是复数(“机器人的名字”)。
机器人在解释这个领域时应该是自由的。建议不区分版本信息的名称的大小写子字符串匹配。
如果允许多个值,解析器怎么可能是自由的?无论定界字符是 ( ,
, ,
;
, ...),它都可以是机器人名称的一部分。
记录以一个或多个 User-agent 行开始
User-agent
如果您可以在一行中提供多个值,为什么要使用多行?
此外:
Disallow
要么所以代替
User-agent: googlebot yahoobot microsoftbot
Disallow: /boringstuff/
Run Code Online (Sandbox Code Playgroud)
你应该使用
User-agent: googlebot
User-agent: yahoobot
User-agent: microsoftbot
Disallow: /boringstuff/
Run Code Online (Sandbox Code Playgroud)
或者(可能更安全,因为您无法确定所有相关的解析器是否支持不那么常见User-agent
的记录多行方式)
User-agent: googlebot
Disallow: /boringstuff/
User-agent: yahoobot
Disallow: /boringstuff/
User-agent: microsoftbot
Disallow: /boringstuff/
Run Code Online (Sandbox Code Playgroud)
(当然User-agent: *
)