我想允许抓取工具访问我的域的根目录(即index.html文件),但没有更深层次的(即没有子目录)。我不想在robots.txt文件中单独列出和拒绝每个子目录。目前我有以下内容,但我认为它阻止了所有内容,包括域根目录中的内容。
User-agent: *
Allow: /$
Disallow: /
如何编写robots.txt来完成我的目标?
提前致谢!
答案 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