2011-03-05 92 views
13

我想允许抓取工具访问我的域的根目录(即index.html文件),但没有更深入的(即没有子目录)。我不想在robots.txt文件中单独列出并单独拒绝每个子目录。目前我有以下内容,但我认为它阻止了一切,包括域根目录中的内容。Robots.txt,如何只允许访问域根目录,而不是更深入?

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

我该如何编写我的robots.txt文件来完成我正在尝试的操作?

在此先感谢!

+1

这不能以“机器人通用”方式完成。你有没有访问.htaccess或类似的? – alexn 2011-03-05 20:35:31

+0

我确实可以访问.htaccess。基本上,我的目标是使用robots.txt,元标记和meta http标题,尽我所能防止除主页(即index.html)之外的任何内容在搜索引擎结果中结束。 – WASa2 2011-03-05 20:40:24

回答

10

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

机器人,允许通配符应该支持这样的:

Disallow: /*/ 

各大搜索引擎爬虫了解通配符,但不幸的是大多数规模较小的没有。

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

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

这里的顺序很重要。爬行者应该参加第一场比赛。因此,如果您的第一条规则是Disallow: /,正确运行的爬网程序将无法访问以下Allow行。

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

所有主要的搜索引擎抓取工具都支持Allow,而且很多较小的搜索引擎抓取工具也是如此。这很容易实现。

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 
相关问题