【问题标题】:Robots.txt "Allow" command?Robots.txt “允许”命令?
【发布时间】:2013-08-18 07:01:03
【问题描述】:

在我的 robots.txt 中:

Disallow: /account
Allow: /account/

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

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

【问题讨论】:

    标签: search-engine robots.txt


    【解决方案1】:

    这里有几点需要注意。

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

    至少,您应该交换允许和禁止的顺序。

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

    鉴于此,我建议:

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

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

    Disallow: /account$
    Disallow: /account/$
    

    【讨论】:

      【解决方案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”,所以是的,您确实需要允许。

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多