SEO优化之Robots.txt的进阶教程

Robots.txt使用要点

在介绍进阶SEO教程之前,我们先来温习一下Robots.txt的使用要点:
1、每个域名(不管是不是子域名)都只能最多有一个Robots.txt文件,放置于网站根目录。yourname.com的Robots.txt对abc.yourname.com没有约束。

2、每种协议都可以有一个Robots.txt。如http://yourname.com和https://yourname.com可以分别有一个Robots.txt。

3、每个端口可以有一个Robots.txt。如http://yourname.com和http://yourname.com:8080可以分别有一个Robots.txt。

4、文件名必须为小写。不能是RoBotS.TXT。

5、user-agent的名称以及user-agent,allow,disallow,crawl-delay,sitemap这些指示符的大小写不敏感。

6、Robots.txt所包含的URL为大小写敏感。分清大小写才能有效排除索引。
allow和disallow的URL必须是不包括协议、域名、端口的路径。

7、disallow: http://yourname.com/abc.htm就错了。改为disallow: /abc.htm

8、sitemap必须包括从HTTP或HTTPS开始的完整的URL。

9、Robots.txt不是死链提交工具,想要删除死链索引还是应该登陆各搜索引擎站长平台提交。

10、Robots.txt只做减法,有没有这个文件的区别即是去不去做这个排除。删除Robots.txt意味着完全开放爬虫漫游。

11、Robots.txt只防君子不防小人。历史上发生过多次违反Robots.txt的事件。网站要把机密信息放到登陆后。

12、要想严格不让搜索引擎索引还是推荐用noindex标签。但是百度并不支持。

13、crawl-delay并不被谷歌和百度支持,Yandex和Bing则支持。Yandex还支持host指示符来表示偏好的域名。

14、符号#用于注释。后面的内容会被忽略。

看不见的通配符*

这里要说的是通配符*。它代表任意长度的任意字符。请注意每一行allow,disallow之后都有一个看不见的*。

也就是说如果你写了disallow: /cat/,那么下面的内容就会影响到所有以/cat/开头的URL,比如:
http://yourname.com/cat/abc.htm
http://yourname.com/cat/abc.html
http://yourname.com/cat/abc/

但是也有例外的情况,那就是allow和disallow之后没有任何赋值的情况。比如这个官方例子
User-agent: *
Disallow: /cyberworld/map/ # This is an infinite virtual URL space

# Cybermapper 可以访问任意页面
User-agent: cybermapper
Disallow:

robots.txt防止向黑客泄露网站的后台和隐私

我们为了让搜索引擎不要收录admin页面而在robots.txt里面做了限制规则。但是这个robots.txt页面,谁都可以看,于是黑客就可以比较清楚的了解网站的结构,比如admin目录、include目录等等。

有没有办法既可以使用robots.txt的屏蔽搜索引擎访问的功能,又不泄露后台地址和隐私目录的办法呢?
有,那就是使用星号(*)作为通配符。举例如下:
User-agent:*
Disallow: /a*/

这个设置,禁止所有的搜索引擎索引根目录下a开头的目录。当然如果你后台的目录是admin,还是有可以被人猜到,但如果你再把admin改为adoit呢?还有会谁能知道?

合并多个User-Agent

如果你有多个讨厌的机器人在抓取你的网页消耗你的资源,那你可能会通过disallow屏蔽他们(当然要他们是君子的前提下)。你可以通过user-agent一次性把他们屏蔽。

User-agent: bad-bot-a
User-agent: bad-bot-b
Disallow: /

这种写法在当你有多个user-agent,每个虽然都比较复杂但是都一样的情况下显得很有用。

User-agent: bad-bot-a
User-agent: bad-bot-b
Disallow: /XXX

#以下省略200行,这样你就可以让Robots.txt变得简洁。

为每个User-Agent订制Sitemap

极诣曾经在《International SEO不完全攻略》一文中指出使用目录进行多语言网站布局在SEO上的问题。由于百度这样的中文搜索引擎并不感兴趣那些泰语、挪威语甚至英语、法语,让百度蜘蛛爬行那些非中文的页面会造成很多资源的浪费,这不单影响索引而且影响排名。为此我们可以使用disallow把其他次要的页面屏蔽掉。

但是对Sitemap这个指示符来说,它并不针对某一个user-agent。不管你的Sitemap语句出现在哪里它对所有的搜索引擎都是有效的。

如果我们想让某些搜索引擎只访问特定的sitemap,这种情况下该如何处理呢?除了在站长平台提交网站地图,我们还可以在robots.txt内实现。别忘了sitemap文件也是一个资源,我们一样可以用disallow去屏蔽掉。假定我们有一个全语言的sitemap-all-lang.xml还有一个中文内容的sitemap-zh.xml。我们可以这样实现:

User-agent: *
Disallow: /sitemap-zh.xml

User-agent: baiduspider
Disallow: /sitemap-all-lang.xml

Sitemap: http://yourdomain.com/sitemap-zh.xml
Sitemap: http://yourdomain.com/sitemap-all-lang.xml

这样一来中文站点地图仅对百度可见,而全语言地图仅对百度之外的蜘蛛可见了。

详见另一篇:
怎样写robots文件

1.本文由杨琼博客整理发布,部分文章来自网络,如有侵犯权益,请联络博主,资源失效和内容勘误欢迎留言.

2.转载请注明本文地址:http://www.iyangqiong.com/web/711.html

3.订阅更新:您可以通过 RSS订阅本站

【推荐!必备网址导航】http://longmiao.wang/

分享到:
顶部 评论 底部