在robots.txt中只允许一个目录文件?

时间:2016-01-21 01:53:50

标签: robots.txt

我想只允许一个目录/minsc的文件,但我想禁止目录的其余部分。

现在robots.txt就是这样:

User-agent: *
Crawl-delay: 10
# Directories
Disallow: /minsc/

我想要允许的文件是/minsc/menu-leaf.png

我害怕造成伤害,所以我不知道是否必须使用:

A)

User-agent: *
Crawl-delay: 10
# Directories
Disallow: /minsc/
Allow: /minsc/menu-leaf.png

B)

User-agent: *
Crawl-delay: 10
# Directories
Disallow: /minsc/*    //added "*" -------------------------------
Allow: /minsc/menu-leaf.png

谢谢,对不起我的英语。

2 个答案:

答案 0 :(得分:5)

根据the robots.txt website

  

排除除一个

以外的所有文件      

目前这有点尴尬,因为没有“允许”字段。该   简单的方法是将所有文件都禁止分开   目录,说“stuff”,并将一个文件保留在上面的级别   目录:

     
    

用户代理:*

         

禁止:/ ~joe / stuff /

  
     

或者,您可以明确禁止所有不允许的页面:

     
    

用户代理:*

         

禁止:/〜joe / junk.html

         

禁止:/〜joe / foo.html

         

禁止:/〜joe / bar.html

  

根据Wikipedia,如果您打算使用Allow指令,它应该在Disallow之前进行,以获得最大的兼容性:

public final MyClass

此外,根据Yandex

,您应该将Crawl-delay放在最后
  

保持与可能偏离的机器人的兼容性   处理robots.txt时的标准,Crawl-delay指令需要   要添加到以User-Agent记录权限开头的组中   在Disallow和Allow指令之后)。

因此,最后,您的robots.txt文件应如下所示:

Allow: /directory1/myfile.html
Disallow: /directory1/

答案 1 :(得分:0)

Robots.txt是一种可以不同方式解释的“非正式”标准。唯一有趣的“标准”实际上是主要参与者如何解释它。

我发现这个消息来源说不支持globbing('*' - 样式通配符):

  

另请注意,User-agent或Disallow行不支持globbing和正则表达式。 User-agent字段中的'*'是一个特殊值,意思是“任何机器人”。具体来说,您不能拥有“User-agent: bot ”,“Disallow:/ tmp / *”或“Disallow:* .gif”这样的行。

http://www.robotstxt.org/robotstxt.html

所以根据这个来源,你应该坚持你的选择(A)。