【问题标题】:Robots.txt deny all except for one domainRobots.txt 拒绝除一个域之外的所有内容
【发布时间】:2013-10-24 02:30:36
【问题描述】:

有没有办法拒绝除一个域之外的所有机器人?我希望搜索引擎不抓取,除非它是某个域。

【问题讨论】:

    标签: robots.txt


    【解决方案1】:

    如果我正确理解您的 cmets 到另一个答案,则您有一个通配符子域,因此 foo.example.com 和 bar.example.com 以及 fooby.example.com 最终都会去同一个地方。只有一条物理路径服务于所有这些域。

    如果是这种情况,那么您无法使用单个 robots.txt 文件执行此操作。 robots.txt 中的规则都是基于域名之后的内容。

    我建议您在该目录中创建一个 robots.txt 文件,其中包含:

    User-agent: *
    Disallow: /
    

    这将阻止所有机器人抓取任何内容。

    现在,假设您希望仅在访问 foo.example.com 时才允许抓取,我将创建一个重写规则,以便尝试访问 foo.example.com/robots.txt 而不是从 foo 获取数据.example.com/robots_foo.txt。该文件将包含:

    User-agent: *
    Disallow:
    

    允许访问所有内容。当然,你可以添加任何你想要的禁止规则。

    如果您无法创建重写规则,那么您将不得不使用Sitemaps。当然,缺点是并非所有爬虫都能理解站点地图。有些人仍想以旧方式爬行。

    【讨论】:

      【解决方案2】:

      用户代理:*

      不允许:/

      用户代理:The robot you want to allow

      允许:/

      【讨论】:

      • 我的应用程序可以安装在通配符子域上我试图阻止除一个子域之外的所有机器人
      • 所以您只希望机器人访问您的子域之一?
      • 是的,其他的都不允许
      • 您需要在每个子域的根目录中放置一个单独的 robots.txt 文件。您希望授予访问权限的子域将包含我上面列出的内容。您需要稍微更改它以允许所有机器人访问该特定子域,这正是您想要的。所有其他人都不允许使用通配符。
      猜你喜欢
      • 2014-01-08
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2020-08-01
      • 1970-01-01
      相关资源
      最近更新 更多