robots.txt是位于网站根目录下的文本文件,并符合robots.txt标准。在此重申一下,关于robots.txt需要记住三个基本的概念:
一、只能有一个robots.txt文件。
二、robots.txt的正确位置是在WEB站点的根目录下。
三、位于子目录下的robots.txt文件将无法访问。
robots.txt的官方正式文档在http://www.robotstxt.org/上。在那里可以找到常见问题页面、完全参考手册和用于遍历WEB的robots名称列表。
如果仔细阅读日志,就会看到搜索引擎蜘蛛对这个特定文件的访问非常频繁。这是因为它们需要对任何被robots.txt排除的文件不做检索,同时需要保持缓存的内容总是最新的。robots.txt以一种非常简单的模式匹配,来向搜索引擎排除URL地址。并且,如果想要从一个站点中排除某个完整目录,或者更特殊一点,比如想要排除很多以相同字符开头的URL地址时,它常常是较为容易使用的方法。
出于不同公司的内部管理原因,有时不可能获得对根目录下这个文件的修改权限。在这种情况下,只要对应用程序中部分有问题的源代码有修改权限,就可以使用robots.txt标签。
robots.txt并不是一种安全形式!它不能阻止对任何文件的访问。它只能阻止搜索引擎对内容的索引,因此能阻止用户通过搜索引擎的结果页面来浏览那些特定的源。不管怎样,用户还是能通过直接操作地址来访问这些页面。同样地,robots.txt文件本身是个公共资源,任何想要细读它的人都可以将他们的浏览器指向“/robots.txt”来获得。如果使用它的目的不正确,比如为了安全而用,只会将那些资源更明显地暴露在潜在的黑客面前。为了保护内容,应该使用传统方法验证用户,并授权他们访问站点中的资源。
robots.txt文件包括User-agent规范,它定义了排除的目标,并为在想排除的一个或多URL地址设置Disallow条目。robots.txt中以“#”号开始的行是注释,并将被忽略。
下面位于站点根文件夹下的robots.txt文件示例,不允许任何robots(*)访问站点的任何文件:
User-agent:*
Disallow:/
以下示例不允许任何以“/directory”开头的URL地址被Google索引:
User-agent:googlebot
Disallow:/directory
“googlebot”是Google的用户代理名。把每个Disallow看作匹配前缀,而不是文件或URL地址,这会很有用。特别地,“/directory.html”也会由于匹配该规则而被排除。如果只希望directory文件夹下的内容被排除,就应该定义为“/directory/”。那个最后的“/”阻止了“/directory.html”被匹配。同样要注意,第一个“/”在所有排除中都必须的。以下示例是无效的:
Disallow:directory
在Disallow之后定义的字符串等同于正则表达式^<your string>.*$——这意味着它是匹配任何以该字符串开头的字符串:
在User-agent中使用的“*”号,并不是用作通配符的。它不是没有任何作用,但是“goo*bot”并不匹配“googlebot”,而且是无效的。
通配符在Disallow命令中同样不是正式有效的。但是Google、MSN以及最近的YAhoo!,都支持这个非标准的通配符匹配格式。然而,我们通常不推荐使用它。因为它不是标准的部分,而且其他很多搜索引擎也不支持。
如果一定要在Disallow语句中使用通配符,明智的做法是只在特定的用户代理子句中这么做,比如User-agent:googlebot。
使用通配符,以下文件robots.txt将通知Google不要索引任何包含子字符串“print=”URL地址,而不论这个子字符串位于该URL中的哪个位置:
User-agent:googlebot
Disallow:/&print=