禁止目录内容,但在robots.txt中允许目录页面

时间:2013-01-07 06:20:11

标签: directory block robots.txt

这是否可以禁止目录下的页面,但仍允许该目录上的页面URL?

Allow: /special-offers/$
Disallow: /special-offers/

允许:

www.mysite.com/special-offers /

但阻止:

www.mysite.com/special-offers/page1

www.mysite.com/special-offers/page2.html

2 个答案:

答案 0 :(得分:2)

看过谷歌自己的robots.txt file,他们正在做我正在质疑的事情。

在第136-137行,他们有:

Disallow: /places/
Allow: /places/$

所以他们阻止任何地方,但允许根位置URL。与我的语法唯一的区别是顺序,Disallow是第一个。

答案 1 :(得分:1)

标准

根据HTML 4.01 specification, Appendix B.4.1 Disallow中允许的值(无双关语)是部分URI(表示部分或完整路径),仅限:

  

“Disallow”字段指定不访问的部分URI。这可以是完整路径,也可以是部分路径;将不会检索以此值开头的任何URI。例如,

     

禁止:/ help 不允许使用/help.html和/help/index.html,而

     

禁止:/ help / 会禁止/help/index.html但允许/help.html。

我认为此后没有任何变化,因为目前HTML5 Specification Drafts根本没有提到robots.txt

扩展

然而,在实践中,许多机器人引擎(例如Googlebot)在他们接受的内容中更灵活。如果您使用,例如:

Disallow: /*.gif$

然后Googlebot将跳过任何扩展名为gif的文件。我认为你可以做这样的事情来禁止文件夹下的所有文件,但我不是百分百肯定(你可以用Google Webmaster Tools测试它们):

Disallow: /special-offers/*.*$

其他选项

无论如何,你不应该过多地依赖它(因为每个搜索引擎可能表现不同),所以如果可能的话,最好使用meta tags or HTTP headers。例如,您可以将您的网络服务器配置为在不应编入索引(或遵循)的所有响应中包含此标头:

X-Robots-Tag: noindex, nofollow

在您的特定网络服务器中搜索最佳方式。这是Apache中的an example,将mod_rewritemod_headers结合起来,根据网址格式有条件地设置一些标头。免责声明:我自己没有测试过,所以我不知道它有多好用。

# all /special-offers/ sub-urls set env var ROBOTS=none
RewriteRule ^/special-offers/.+$ - [E=ROBOTS:none]

# if env var ROBOTS is set then create header X-Robots-Tag: $ENV{ROBOTS}
RequestHeader set X-Robots-Tag %{ROBOTS}e env=ROBOTS

(注意:none相当于noindex, nofollow