【问题标题】:Robots.txt, how to allow access only to domain root, and no deeper? [closed]Robots.txt,如何只允许访问域根目录,而不是更深? [关闭]
【发布时间】:2016-07-27 11:28:48
【问题描述】:

我想允许爬虫访问我域的根目录(即 index.html 文件),但不能更深入(即没有子目录)。我不想在 robots.txt 文件中单独列出和拒绝每个子目录。目前我有以下内容,但我认为它会阻止所有内容,包括域根目录中的内容。

User-agent: *
Allow: /$
Disallow: /

如何编写我的 robots.txt 来完成我正在尝试的目标?

提前致谢!

【问题讨论】:

  • 这不能以“机器人通用”的方式完成。您是否有权访问 .htaccess 或类似文件?
  • 我确实可以访问 .htaccess。基本上,我的目标是使用 robots.txt、元标记和元 http 标头,尽我所能防止除主页(即 index.html)以外的任何内容出现在搜索引擎结果中。

标签: robots.txt


【解决方案1】:

没有任何东西适用于所有爬虫。有两个选项可能对您有用。

允许使用通配符的机器人应该支持以下内容:

Disallow: /*/

主要的搜索引擎爬虫了解通配符,但不幸的是大多数较小的搜索引擎不了解。

如果您的根目录中的文件相对较少并且您不经常添加新文件,您可以使用Allow 只允许访问这些文件,然后使用Disallow: / 来限制其他所有文件。那就是:

User-agent: *
Allow: /index.html
Allow: /coolstuff.jpg
Allow: /morecoolstuff.html
Disallow: /

这里的顺序很重要。爬行者应该参加第一场比赛。因此,如果您的第一条规则是 Disallow: /,则行为正常的爬虫将无法到达以下 Allow 行。

如果爬虫不支持Allow,那么它将看到Disallow: /,并且不会爬取您网站上的任何内容。当然,前提是它会忽略 robots.txt 中它不理解的内容。

所有主要的搜索引擎爬虫都支持Allow,许多较小的爬虫也支持。很容易实现。

【讨论】:

    【解决方案2】:

    简而言之,没有办法使用 robots.txt 标准很好地做到这一点。记住 Disallow 指定了一个路径前缀。 通配符和允许是非标准的。

    所以下面的方法(拼凑!)会奏效。

    User-agent: *
    Disallow: /a
    Disallow: /b
    Disallow: /c
    ...
    Disallow: /z
    Disallow: /A
    Disallow: /B
    Disallow: /C
    ...
    Disallow: /Z
    Disallow: /0
    Disallow: /1
    Disallow: /2
    ...
    Disallow: /9
    

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      相关资源
      最近更新 更多