robots.txt -- 用户代理块之间需要空行,还是可选的?

robots.txt -- blank lines required between user-agent blocks, or optional?

权威文档来源中的描述看似矛盾。

A Standard for Robot Exclusion:

('record' 指的是每个用户代理块)

"The file consists of one or more records separated by one or more blank lines (terminated by CR,CR/NL, or NL). Each record contains lines of the form ...".

Google的Robot.txt Specifications:

"... Note the optional use of white-space and empty lines to improve readability."

所以 -- 根据我们可用的文档 -- 此处的空行是强制性的吗?

User-agent: *
Disallow: /this-directory/

User-agent: DotBot
Disallow: /this-directory/
Disallow: /and-this-directory/

或者,这样可以吗?

User-agent: *
Disallow: /this-directory/
User-agent: DotBot
Disallow: /this-directory/
Disallow: /and-this-directory/

Google Robots.txt Parser and Matcher Library does not have special handling for blank lines. Python urllib.robotparser 总是将空行解释为新记录的开始,尽管它们不是严格要求的并且解析器也将 User-Agent: 识别为一个。因此,您的两种配置都适用于任一解析器。

然而,这是两个突出的 robots.txt 解析器所特有的;你仍然应该以最常见明确的方式来编写它,以处理写得不好的自定义解析器。

最好不要有空行。我的 robots.txt 文件有问题,在删除所有空行后一切正常。