Robots.txt,如何只允许访问域根目录,而不是更深入?

时间:2011-03-05 20:32:30

标签: robots.txt

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

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

如何编写robots.txt来完成我的目标?

提前致谢!

2 个答案:

答案 0 :(得分:10)

没有什么能适用于所有抓取工具。有两个选项可能对您有用。

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

Disallow: /*/

主要的搜索引擎抓取工具了解通配符,但遗憾的是大多数较小的通配符都没有。

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

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

此处的订单很重要。爬虫应该参加第一场比赛。因此,如果您的第一个规则是Disallow: /,那么正常运行的抓取工具将无法访问以下Allow行。

如果抓取工具不支持Allow,则会看到Disallow: /并且不会抓取您网站上的任何内容。当然,提供它忽略了robots.txt中它不理解的东西。

所有主要搜索引擎抓取工具都支持Allow,而许多较小的搜索引擎抓取工具也支持{{1}}。它很容易实现。

答案 1 :(得分:1)

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

因此,以下方法(kludge!)将起作用。

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