robots基础知识与注意问题

robots 是放在网站根目录下的一个 txt 纯文本文件(robots.txt),robots.txt 是一种文本协议,可以保护网站和用户的隐私,它规定搜索引擎蜘蛛哪些内容是可以检索的,哪些是不被允许的。更多详细的基础教程参见:

百度对 robots 的介绍
Google 对 robots 的介绍

绝大部分 spider 能够识别的是以下几种:

noindex - 页面会被抓取,但在被 google 的后台系统分析完以后会被丢弃,不会进入 google 的索引排序,对用户而言也就不会出现在搜索结果中。
nofollow - 禁止 googlebot 追踪页面上的一切链接。(与 meta 级别的 nofollow 不同的是, link 级别里的nofollow 只会阻止 robot 追踪单条链接)
noarchive - 禁止在搜索结果中显示该页面的快照
nosnippet - 禁止在搜索结果的网页链接下显示内容摘要,同时阻止搜索引擎产生该页面的快照
noodp - 在搜索结果的页面摘要部分屏蔽 open directory project 对该页面的描述
none - 等同于同时使用 noindex 和 nofollow 两个参数

robots 文件的使用,有很多特别需要注意的,甚至很多知识点甚至搜索引擎本身都没有给出详尽的说明或者是使用方法。在参阅了大量的资料和结合自身的一些尝试,本文将重点说明下,一些在对 robots 文件进行处理的过程中需要特别注意的问题:

一、不允许出现多条 user-agent 的记录

一份 “/robots.txt” 文档中不允许出现多条包含 “user-agent: *” 的记录(但允许没有此记录)。

二、spider 名字的大小写问题

大多数搜索引擎的 spider 在读取 user-agent 值的时候都是忽略大小写,既 Googlebot 和 googlebot 应该都能被 google 识别。但是,我在学习淘宝 seo 的时候也发现,或许为了保险起见,淘宝的工作人员在自己的“/robots.txt”里面分别写了“user-agent: baiduspider”和“user-agent: baiduspider”两条。(参见:http://www.taobao.com/robots.txt

三、allow 和 disallow 的顺序

大部分情况下,想要兼容所有的机器人,就应当将 allow 指令放在 disallow 指令的前面,例如:

Allow: /a/b.html
Disallow: /a/

这会阻止对"/a/"内除了"/a/b.html"以外一切内容的检索,因为后者是优先匹配成功的。虽然对于 google 和百度来说,先后顺序并不重要。但是不排除会导致其他搜索引擎出现抓取问题。

四、allow 与 disallow 的角力

如果 allow 指令中的地址同 disallow 指令中的地址相比具有相同或更多字符(意味着 allow 指令所描述的地址更“深”、更“具体”)的话,虽然 disallow 指令也能匹配,但 allow 指令仍然会“获胜”(这样就达到开放子文件夹的目的了,同时没被 allow 的部分依然不会被检索)。

五、反斜杠“/”的意义

反斜杠“/”表示禁止搜索引擎进入该目录。

User-agent: spider
Disallow: /a

对这样的记录机器人该怎么反应?按照res标准,机器人会将名为“a”的文件和名为“a”的目录都disallow。当然,比较符合逻辑切清晰的写法是使用“/”来标识所声明的路径:
Disallow: /a/
注意不要忘记“a”前面的“/”

六、在指示行末尾加注的问题

在“/robots.txt”文件中,凡以“#”开头的行,均被视为注解内容,这和 unix 中的惯例是一样的。例如:Disallow: /cgi-bin/ # this bans robots from our cgi-bin

七、尽量不要在一行的前面出现空格

如“ disallow: /”,Res标准并未对这种格式予以特别说明,但和上面一个问题一样,可能导致某些机器人无法正确解读。

八、文件目录区分大小写(这个或许是困惑大多数人的)

虽然res标准忽略大小写(case insensitive),但目录和文件名却是大小写敏感的。所以对于"user-agent"和 "disallow" 指令,用大小写都是可以的。但对于所声明的目录或文件名却一定要注意大小写的问题。例如:
Disallow: /abc.htm 会拦截“http://www.example.com/abc.htm”,却会允许http://www.example.com/Abc.htm。所以在IIS服务器可能出现的 诸多 大小写目录问题,可以通过此方法得到圆满解决。

九、包含了多个同类型meta标签的页面,spider 会累加内容取值

对于下面两条语句来说:

< meta name="robots" content="noindex" />
< meta name="robots" content="nofollow" />

搜索引擎将会理解成:

< meta name="robots" content="noindex, nofollow" />

十、当内容取值冲突的时候,大多数搜索引擎会采纳限制性最强的参数

例如,如果页面中包含如下 meta 标签:

< meta name="robots" content="noindex" />
< meta name="robots" content="index" />

Spider 会服从 noindex 的取值。

十一、robots.txt 和 robots meta 标签冲突,googlebot 会服从限制较严的规则

如果你在 robots.txt 中阻止了对一个页面的检索,googlebot 永远不会爬到这个页面,因此也根本不会读到这个页面上的 meta 标签。 如果你在robots.txt里面允许了对一个页面的检索,却在 meta 标签中禁止了这一行为,googlebot 会到达这个页面,在读到 meta 标签后终止进一步的检索行为。

评论