搜索引擎不会告诉你关于什么
文章出自光年论坛pollux(刘总)整理的【搜索引擎不会告诉你关于什么robots最近碰巧遇到了潜规则robots问题,觉得文章很有价值就转载给大家。
meta标签中的robots
在所有meta在标签中,有一个特殊的类别来指导机器人如何处理捕获的页面,以及如何跟踪页面上的链接。描述此信息meta标签被称为robotsmeta标签(robots meta tag),它是本文的主角。
Robots文件是我们与搜索引擎对话的最重要渠道。
为什么meta我们从来没有在网页上看到过这么多种信息?meta浏览器上没有显示标签的内容。绝大多数meta信息写给搜索引擎,帮助搜索引擎判断页面的价值和重要性。
作为网页设计师与搜索引擎沟通的重要渠道,meta该标签提供了从不同角度描述页面的基本信息,机器人在访问页面时会首先阅读此部分。
关于robots基础阅读:
http://www.baidu.com/search/robots.html
http://www.robotstxt.org/robotstxt.html
http://www.google.com/support/webmasters/bin/answer.py?Hl=cn&answer=156449
绝大部分 spider 能识别的有以下几种:
- noindex -页面将被抓取,但在google分析后,后台系统将被丢弃,不会进入google搜索结果中不会出现索引排序
- nofollow -【禁止googlebot追踪页面上的一切链接(阻止访问)。(与meta级别的nofollow不同的是, link级别里的nofollow只会阻止robot跟踪单个链接)
- noarchive -【禁止在搜索结果中显示页面快照】
- nosnippet -禁止在搜索结果的网页链接下显示摘要,并防止搜索引擎在页面上产生快照
- noodp -在搜索结果搜索结果页面摘要中open directory project描述页面
- none -【等于同时使用noindex和nofollow两个参数】
robots文件的使用需要特别注意,甚至许多知识点甚至搜索引擎本身也没有给出详细的解释或使用方法。在参考了大量的信息和一些自己的尝试后,本文将关注一些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部分仍不会被检索)。
例如(假设与顺序无关)
Disallow:/a/b
Allow:/a
这样就是允许除b以外的所有a
Disallow:/a
Allow:/a/b
这就是禁止除b以外的一切a
反斜杠/的意义
反斜杠/表示禁止搜索引擎进入目录。
User-agent: spider
Disallow: /a
如何应对这样的记录机器人?res机器人将被称为标准a文件和名为a”的目录都disallow。当然,逻辑清晰的写法是用/来识别声明的路径:
Disallow: /a/
注意不要忘记“a/前面的/
根据/的意义,有些只允许搜索引擎,robots.txt会这样写
User-agent: Baiduspider
Disallow:
User-agent: *
Disallow: /
这样用百度robots工具测试也是如此OK是的,但是百度知道百度自己的产品。robots更多的是写作
User-agent: Baiduspider
Allow: ?/
User-agent: *
Disallow: /
其实我在想,也许/的正确表达应该是"进入该目录"不然Allow: ?/很难理解
在指示行末尾加注的问题
在“/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” />
当内容值冲突时,google大多数搜索引擎,如百度,都会采用最有限的参数
例如,如果页面包含以下内容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进一步的检索行为在标签后终止。
当然,前提是搜索引擎严格遵守robots来办事
刘总说的robots非常详细,还有一个大神经常补充的问题,那就是robots.txt文件本身的格式是utf-8.生成时使用一些文本编辑器等待,经常出现在文本前ascii代码问题是由这种情况引起的User-agent:读取出错。
可以在 google 站长工具 或?http://tool.motoricerca.info/robots-checker.phtml?进行检测。
以上就是搜索引擎不会告诉你关于什么的全部内容,