这是否可以禁止目录下的页面,但仍允许该目录上的页面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
等
答案 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_rewrite
与mod_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
)