0

在我的 robots.txt 中:

Disallow: /account
Allow: /account/

在我的站点中,有一个页面/account只有登录的人才能访问,但是要查看另一个用户的个人资料页面,您可以转到/account/username. 所以我希望 robots.txt 禁止单/account页但允许目录。这个设置有效吗?

推论:是否Disallow: /account也不允许该目录/account/,或者我只是在浪费时间然后明确允许它?

4

2 回答 2

3

这里有几件事要注意。

首先,正如@plasticinsect 在他的回答中所说,最具体的规则获胜。对于谷歌机器人。但是,其他机器人使用原始 robots.txt 协议中的规则,即指令按顺序处理 - 它们出现在 robots.txt 文件中的顺序。那些机器人会看到 Disallow 并停止。

至少,您应该交换 Allow 和 Disallow 的顺序。

此外,有时对于是否/account不同/account/的 url 存在分歧。如果爬虫使用 访问您的网站http://example.com/account/,则 robots.txt 将允许它。您可能想要禁止/account/$. 这不会阻止所有机器人(那些不支持$字符串结尾标记的机器人将忽略该指令),但值得一试。

鉴于此,我建议:

Disallow: /account/$
Allow: /account/
Disallow: /account

或者,如果您只是担心 Googlebot 和其他主要抓取工具:

Disallow: /account$
Disallow: /account/$
于 2013-08-16T19:12:07.863 回答
2

对于 Googlebot,这肯定会奏效。对于其他网络机器人,它可能会也可能不会,这取决于它们如何实现 robots.txt。我不会指望它。

根据:https ://developers.google.com/webmasters/control-crawl-index/docs/robots_txt ,

“在组成员级别,特别是对于允许和禁止指令,基于 [path] 条目长度的最具体规则将胜过不太具体(较短)的规则。”

由于“/account/”比“/account”长,因此允许将覆盖禁止,至少在 Googlebot 上是这样。

然而,这几乎肯定不会在许多其他网络机器人上工作。最初的 robots.txt 标准甚至不包括 Allow 指令。即使机器人确实支持允许,也不能保证它的优先级与谷歌相同。所以,如果你只关心谷歌,那就去吧。如果您需要它为其他机器人工作,您可能想要找到不同的解决方案,可能是机器人元标记或 X-Robots-Tag 标头。

要回答您的相关问题,“禁止:/account”将阻止任何以“/account”开头的文件或路径,包括“/account/user”,所以是的,您确实需要允许。

于 2013-08-16T18:53:41.277 回答