控制页面的抓取、索引是SEO优化网站结构时经常需要用到的技术。常见的工具包括:
- robots文件
- 页面的noindex标签
- 链接的nofollow属性
- 页面的301转向
- 页面的canonical标签等
这几个工具各有各的特定应用场景,但都是用于控制网站内部结构,之间容易混淆,还经常需要配合使用,SEO们必须准确理解这几个工具的机制和原理,不然很容易出错。
这篇贴子讨论robots文件。
Robots文件的作用
robots文件是一个放置在域名(或子域名)根目录下的、文件名固定为robots.txt的(全部小写)、UTF8编码的、纯ASCII文本文件,用来通知搜索引擎,网站的哪些部分可以抓取,哪些禁止抓取。robots.txt只对所在的域名(或子域名)、协议和端口号起作用。
搜索引擎蜘蛛在抓取网站页面前,会先看一下robots.txt的内容,哪些页面可以抓取,哪些页面被站长禁止抓取。当然,是否遵守robots文件的规则就靠自觉了,某些坏蜘蛛就不遵守,站长是没办法的,比如采集内容的、克隆网站的。
所以,robots.txt文件是站长禁止搜索引擎抓取某些页面的指令。但是要注意,页面没有被抓取,不意味着页面就不会被索引和收录,这是两个概念。详情参考爬行、抓取、索引的概念介绍贴子。
怎样写Robots文件
Robots文件的每行记录均由一个字段、一个冒号和一个值组成,标准格式是:
<field>:<optional space><value><optional space><#optional-comment>
其中<optional space>指的是可以加一个空格,但不是必须,通常建议加这个空格,比较容易读。
<#optional-comment>是另一个可选项,用于写些注释。
通常robots文件中的记录通常以User-agent开始,后面加上若干Disallow和Allow行。User-agent指定本记录用于哪个搜索引擎蜘蛛,Disallow是指定禁止抓取的文件或目录,Allow是指定允许抓取的文件或记录。
所有搜索引擎都支持的robots文件记录包括:
Disallow – 告诉蜘蛛不要抓取某些文件或目录。如下面代码将阻止所有蜘蛛抓取所有的网站文件:
User-agent: *
Disallow: /
Allow – 告诉蜘蛛应该抓取某些文件。Allow和Disallow配合使用,可以告诉蜘蛛某个目录下,大部分都不抓取,只抓取一部分。如下面代码将使蜘蛛不抓取ab目录下其他文件,而只抓取其中cd下的文件:
User-agent: *
Disallow: /ab/
Allow: /ab/cd
$通配符 – 匹配URL结尾的字符。如下面代码将允许蜘蛛访问以.htm为后缀的URL:
User-agent: *
Allow: .htm$
*通配符 – 告诉蜘蛛匹配任意一段字符。如下面一段代码将禁止所有蜘蛛抓取所有htm文件:
User-agent: *
Disallow: /*.htm
Sitemaps位置 – 告诉蜘蛛你的网站地图在哪里,格式为:
Sitemap: <sitemap_location>
Robots文件的注意事项
另外提醒大家注意的是,robots.txt文件可以不存在,返回404错误,意味着允许蜘蛛抓取所有内容。但抓取robots.txt文件时却发生超时之类的错误,可能导致搜索引擎不收录网站,因为蜘蛛不知道robots.txt文件是否存在或者里面有什么内容,这与确认文件不存在是不一样的。
另外,如果robots.txt文件不存在,而404页面上包含一些URL,可能会造成搜索引擎误将404页面的内容当作robots文件的内容,导致无法预测的后果。所以,即使想开放所有搜索引擎蜘蛛抓取所有内容,也最好放一个robots文件,哪怕是空的文件。
Robots文件的检测
写好robots文件后如果不确定是否写得正确,可以用搜索引擎官方工具检测验证。如百度资源平台的robots文件验证工具 https://ziyuan.baidu.com/robots/index
输入网址后,验证工具会告诉你这个URL是否允许被抓取。
掌握robots文件用法和写法是SEO的基本功。遇到页面不被收录或收录骤降,robots文件也是第一个要检查的。
正好在找资料。。。哦也。
User-agent: *
Disallow: /ab
如果这样呢
这篇文章很即时也很重要,请问有没有完整中文版啊?(“Google,雅虎,微软的官方博客”全是英文,看不懂啊)
没百度什么事
能不能列举下百度蜘蛛的标准呢
谢谢ZAC。
感谢!
为什么我看到很少网站用这些meta呢
感谢ZAC,再次学习.
谢谢老师给我们提供了这么重要的信息!
网站被K了 不知道加上robots.txt这个文件有没效果!
要巨头们共同推一项什么的真的是不容易啊。
非常喜欢你的文章,在网上看了很多关于wordpress的robots.txt的写法,想请教一下你的看法
请教zac,象月光博客那样的博客在google搜索引擎中收录的页面显示的摘要文字都是订阅博客,千篇一律,而如果导航栏放在右侧的话,就不会出现这样的情况。象你的博客也是把导航栏放在右侧的,而收录中显示的摘要文字是正常的。
问题:1)这样的布局对排名影响吗?
2)应该更多的兼顾用户的浏览习惯,而不是搜索引擎看到的内容。是这样吗?
一般人的浏览习惯是左侧内容优先入眼。
如果我想禁止蜘蛛爬我根目录的 wap.asp?act=Com&id=28
wap.asp?act=Com&id=3
类似这样的后缀 我该怎么写?
User-agent: *
Disallow: /wap.asp?act=Com&id=*
这样?
还是
User-agent: *
Disallow: /*.asp
有点不太明白
不过我最近发现百度对Robots.txt看的比较重了,我有一个站有Robots.txt,第一天读取了,第二天百度蜘蛛又来了,还有一个站,没放Robots.txt第一天蜘蛛来返回404,连续二天都没有再来了,看看过二天返回什么情况。
希望能分析最近BAIDU的变化,谢谢
好文,收藏至20ju.com
倒是有点好奇百度会怎么做
不错~ 多谢zac啦~ 感谢分享
很少用到这个“`
正在找这东西呢…………
SEO里基本的规则错误不要犯.
需要注意Robots的写法,有些问题就是因为Robots引起的
正在找这方面的资料,谢谢了
终于找到了这篇文章..哈哈
这篇真好!
好文章收下了
没什么用
直接使用官方提供的。。呵呵。
淘宝不让抓取了
淘宝—–牛。就喜欢淘宝的个性。马云,好样的。
请教Zac兄和各位看官:只允许google和百度抓取,而阻止其他所有蜘蛛抓取,如何写?这样行吗:):
User-agent: Googlebot
Disallow: /
allow: /archive/
allow: index.php
allow: sitemap.php
User-agent: Baiduspider
Disallow: /
allow: /archive/
allow: index.php
allow: sitemap.php
User-agent: *
Disallow: /
淘宝不让抓取了
挺详细的,复习了一次
学习了,刚才还在做rebots文件
我也写了一个关于robots的文章,希望能共同学习:
http://www.mingonghuang.com/333.html
不错,学习了,最近在研究搜索引擎搜录问题,正好关注关注
http://www.sogosf.com 这个网站这样写,可以么?好像百度还可以抓啊,另外能屏蔽死链吗?怎么写啊,
User-agent: *
Disallow: /template/Bhsj/
Disallow: /arybest/
Disallow: /Inc/
Disallow: /Data/
Disallow: /css/
Disallow: /Images/
Disallow: /FCKeditor/
Disallow: /Template/Default/js/
Disallow: /Template/Default/Images/
对于一个网站运维来说那些 不遵守规则的网站让我们很头疼…
现在的百度也支持了一些。。。
这篇文字非常有用,我现在也不是很清楚的。
多谢分享
网站是让第三方服务公司做的,但是我想更改robots,要如何实现的?在后台都不修改