SEO实战密码:60天网站流量提高20倍(第3版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.6.1 robots文件

搜索引擎蜘蛛访问网站时,会先查看网站根目录下有没有一个命名为robots.txt的纯文本文件,robots.txt用于指令搜索引擎禁止抓取网站某些内容或指定允许抓取某些内容。如百度的robots文件位于:

http://www.baidu.com/robots.txt

只有在需要禁止抓取某些内容时,写robots.txt才有意义。robots文件不存在或者是空文件都意味着允许搜索引擎抓取所有内容。有的服务器设置有问题,robots文件不存在时会返回200状态码及一些错误信息,而不是404状态码,这有可能使搜索引擎错误解读robots文件信息,所以建议就算允许抓取所有内容,也要建一个空的robots.txt文件,放在根目录下。

robots文件由记录组成,记录之间以空行分开。记录格式为:

<域>:<可选空格><域值><可选空格>

最简单的robots文件:

User-agent: *
Disallow: /

上面这个robots文件禁止所有搜索引擎抓取任何内容。

User-agent:指定下面的规则适用于哪个蜘蛛。通配符*代表所有搜索引擎。只适用于百度蜘蛛则用:

User-agent: Baiduspider

只适用于Google蜘蛛则用:

User-Agent: Googlebot

Disallow:告诉蜘蛛不要抓取某些文件或目录。例如下面的代码将阻止所有蜘蛛抓取/cgi-bin/和/tmp/两个目录下的内容及文件/aa/index.html:

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /aa/index.html

Disallow:禁止的目录或文件必须分开写,每个一行,不能写成:

Disallow: /cgi-bin/ /tmp/ /aa/index.html

下面的指令相当于允许所有搜索引擎抓取任何内容:

User-agent: *
Disallow:

下面的代码禁止除百度外的所有搜索引擎抓取任何内容:

User-agent: Baiduspider
Disallow:

User-agent: *
Disallow: /

Allow:告诉蜘蛛应该抓取某些文件。由于不指定就是允许抓取,Allow:单独写没有意义,Allow和Disallow配合使用,可以告诉蜘蛛某个目录下大部分不允许抓取,只允许抓取一部分。例如,下面的代码将使蜘蛛不抓取/ab/目录下其他目录和文件,但允许抓取其中/cd/目录下的内容:

User-agent: *
Disallow: /ab/
Allow: /ab/cd/

$通配符:匹配URL结尾的字符。例如,下面的代码将允许蜘蛛抓取以.htm为后缀的URL:

User-agent: *
Allow: .htm$

下面的代码将禁止百度抓取所有.jpg文件:

User-agent: Baiduspider
Disallow: .jpg$

*通配符:告诉蜘蛛匹配任意一段字符。例如,下面一段代码将禁止蜘蛛抓取所有htm文件:

User-agent: *
Disallow: /*.htm

Sitemaps位置:告诉蜘蛛XML网站地图在哪里,格式为:

Sitemap: <网站地图位置>

主流搜索引擎都遵守robots文件指令,robots.txt禁止抓取的文件搜索引擎将不访问,不抓取。但要注意的是,被robots文件禁止抓取的URL还是可能被索引并出现在搜索结果中。只要有导入链接指向这个URL,搜索引擎就知道这个URL的存在,虽然不会抓取页面内容,但是索引库中还是有这个URL的信息,并以下面几种形式显示在搜索结果中:

●—只显示URL,没有标题、描述。

●—显示开放目录或雅虎等重要目录收录的标题和描述。

●—导入链接的锚文字显示为标题和描述。

●—搜索引擎从其他地方获得的信息显示为标题和描述。

最著名的例子,淘宝整站用robots文件禁止百度蜘蛛抓取,如图4-8所示。

图4-8 淘宝禁止百度抓取

但在百度搜索淘宝还是会返回首页及少量其他页面信息的,只不过页面标题和摘要来自其他来源,不是页面本身内容,如图4-9所示。

图4-9 百度返回淘宝首页

要想使URL完全不出现在搜索结果中,需要使用页面上的noindex meta robots标签禁止索引。