如何写好WordPress博客的robots.txt文件
无论你是否使用WordPress系统,对robots.txt有无了解,你都能从这份WordPress博客的robots.txt文件写作指南中找到有用的信息。如果对这两者你都是新手,你也完全可以根据本文写出一份完整而出色的robots.txt文件。好吧,省掉废话,我们直入主题。
为何要写robots.txt
做网站的朋友一定知道搜索引擎,因为搜索引擎的蜘蛛机器人(spider)对你的网站进行爬行并索引你的网页,并随后通过关键字搜索为你的网站带来流量。然而,植株机器人的爬行行为往往超出你的想象和愿望,你希望它们抓取你最有价值的网页,它们却访问那些不重要的信息或者你认为私密的或是不适宜公开的信息或数据。所以robots.txt诞生了。网站管理员通过它对搜索引擎给予指示,限制搜索引擎对特定内容(诸如网站目录、网页、特定文件类型等等)的访问。robots.txt的作用简单来看,正如下图表示的一样。
当然需要值得注意的是,事实上robots.txt的访问与解析并不是一个强制的协议标准,因此robots.txt的解析完全取决于搜索引擎本身的技术实现与商业伦理,也就是说如果一个搜索引擎不尊重robots.txt的“君子协议”,那么无论robots.txt文件写的多严密多好也是没用的。所幸的是,互联网社会的大部分成员都还是尊重Robots协议的。
另外一方面,即便是一个尊重robots.txt的搜索引擎,其对robots.txt解释的技术实现也可以存在细微差别。不过,这仍然毫不影响robots.txt文件对一个网站的重要性。
我们来看看,robots.txt对我们的网站有哪些好处:
- 保护网站内容,而只呈现那些可以和希望呈现给搜索引擎的网页内容
- 搜索引擎优化SEO,避免重复网页内容
- 提交网站地图Sitemap文件
怎样写好WordPress博客的robots.txt
为了让搜索引擎能索引你的网页并为你带来访问流量,就要正确地写好robots.txt,这对一个网站的SEO是至关重要的。下面就一步一步从零开始告诉你怎样写一份robots.txt文件。
创建robots.txt
robots.txt文件是一个文本文件,使用任何一个常见的文本编辑器,比如Windows系统自带的Notepad,就可以创建和编辑它。这份文本文件中包含了若干行访问规则与指示,这些访问规则看起来很像”Disallow: /blocked”这样的形式。robots.txt文件中也允许使用注释行,注释行以一个”#”符号开头,通常形式是:
# 这是一个注释行 |
当robots.txt文件在修改完成后,就需要上传并存放到一个网站的根目录中,而从浏览器中访问时,它的地址就例如”http://www.yuhua.org/robots.txt”。接下来我们看看Robots.txt文件的内容吧。
先指示适用的搜索引擎
我们先用下面这行规则开头:
User-agent: * |
这行规则告诉读取Robots.txt文件的搜索引擎,之后的访问规则针对所有的搜索引擎都有效。
限制搜索引擎访问特定文件
然后我们继续为robots.txt文件添加特定文件的访问规则。任何一种阻止访问的指示,都以”Disallow:”开头,之后跟随你想要禁止访问的内容,例如”/blocked”。
需要注意的是,搜索引擎在解析禁止访问的内容时,是使用字符串匹配的,因此robots.txt文件中添加以下规则后,搜索引擎就不会访问一切在网站根目录下的以”blocked”开头的文件:
Disallow: /blocked |
以下文件对于搜索引擎都属于上面那条规则所屏蔽的页面:
blocked.html blocked.xml blockedfile.html blocked-file.html |
正如前面所介绍的例子一样,当使用类似”/blocked”这样的规则时,所有根目录下文件名符合”blocked”文件开头的文件都会被阻挡在搜索引擎的访问之外。
但是需要注意的是:规则必须以”/”开头,即一个”Disallow: /blocked”的开头属于合法的规则,而”Disallow: blocked”则对百度搜索引擎不合法,为了兼容性,我们保证每条规则以”/”开始。
现实中的文件名往往并没有例子介绍的那么简单,如果碰到复杂的文件名,那么就要使用文件通配符”*”了。文件通配符的含义是任意字串,看下面的例子你就明白了。当在robots.txt文件中建立一个规则如下:
Disallow: /*blocked |
以下这些文件就都符合这条阻止访问的规则了:
fileblocked.html file-blocked.html blocked.html blocked-file.xml |
不过,对文件的阻止规则更常见的用途是对特定的文件类型添加规则,比如:
- .php脚本文件
- .js脚本文件
- .inc脚本包含文件
- .css样式表文件
这几类文件,对我们网站的搜索引擎优化SEO并没有任何帮助,因此只要添加如下规则,就可以防止搜索引擎访问这些类型的文件:
Disallow: /*.php$ Disallow: /*.js$ Disallow: /*.inc$ Disallow: /*.css$ |
这些规则中文件结尾的”$”代表终结,这样假如有”file.jsp”这样的脚本文件就不会因为”Disallow: /*.js”这样的规则而不被搜索引擎收录了。
对文件的阻止规则就讲到这里,下面来看一下对目录的规则应该如何写。
限制搜索引擎访问目录
对目录的访问规则,往往在网站的使用中是最常见,也是最有用的,尤其是如果你使用WordPress作为你的网站的程序框架的话,它的作用是非常显著的。
对一个WordPress网站来说,假定WordPress被安装在根目录下的话,那么在网站的根目录中往往会存在这样几个物理目录:
- /wp-admin
- /wp-includes
- /wp-content
- /wp-content/cache
- /wp-content/languages
- /wp-content/plugins
- /wp-content/themes
- /wp-content/upgrade
除此之外,还可能有象:
- cgi-bin
这样的系统缺省建立的目录。这些目录中有些是系统后台管理界面的目录,有些是系统缺省脚本目录,除了”/wp-content/uploads”目录以外,你应该并不希望搜索引擎对其余几个目录进行任何的访问。
而在网站的实际访问中,还会存在类似:
- /tag/
- /category/
- /2012/
- /2013/
- /page/
- /comments/
- /trackback/
- /feed/
这样的虚拟目录,这些目录并不存在于您的系统文件目录中,但是在访问时,却实实在在的存在。而这些目录往往只是一个文章的列表(List)或瓦片视图(Tile Layout),或是文章的评论、RSS Feed,甚至是作者页。从搜索引擎优化SEO的角度来说,你往往希望搜索引擎只爬行(follow)这些页面,而不是索引(index)这些页面。此时,你可能希望在robots.txt中对这些目录作出明确的阻止访问的指示。那么根据以上物理目录与虚拟目录的阻止访问的需求,我们就可以编写出下面这段访问规则:
Disallow: /cgi-bin/ Disallow: /wp-admin/ Disallow: /wp-content/cache/ Disallow: /wp-content/languages/ Disallow: /wp-content/plugins/ Disallow: /wp-content/themes/ Disallow: /wp-content/upgrade/ Disallow: /wp-includes/ Disallow: /comments/ Disallow: /category/ Disallow: /tag/ Disallow: /page/ Disallow: /feed/ Disallow: /trackback/ Disallow: /2010/ Disallow: /2011/ Disallow: /2012/ Disallow: /2013/ |
你可能已经从这段规则中看出一些眉目来,那就是每个目录规则之后必定以一个”/”来结束,这在之前的文件访问规则中是没有。没错!结尾的”/”正是文件与目录规则之间的区别。
一旦应用如上访问规则后,所有这些WordPress网站目录下的文件,搜索引擎就都不会访问了。不过如果你使用WordPress的固定链接的话,并且也象我一样使用“文章名”的方式设置固定链接的话(如上图所示),那么WordPress一定会有这样的URI网址:
- /complete-guide-how-to-write-wordpress-robots-txt/feed/
- /complete-guide-how-to-write-wordpress-robots-txt/trackback/
其中的”feed/”与”trackback/”在每个文章的URI之后都有,我们又不可能将所有文章URI都加进robots.txt中去,那么这时就又要用上通配符”*”来帮忙了,在robots.txt中添加如下规则就达到目的了。
Disallow: /*/feed/ Disallow: /*/trackback/ |
进一步优化
有时候,WordPress网站会在URI后追加”?”并用HTTP GET方式传入一系列的查询字串(Query String),但是访问的脚本却是一个。为了防止搜索引擎优化SEO中要避免出现的重复内容(Duplicate Content),即不同网址相同内容的情况,我们还要再添加几条规则来做优化。
Disallow: /*? Disallow: /*/*? Disallow: /*/*/*? |
添加这几条规则后,基本大部分在URI中包含查询字串的访问,都会被阻止了。这对于曾经用过Mobile Pack这样的主题的WordPress网站来说最有用,因为Mobile Pack主题会创建大量的带有查询字串的URI,造成搜索引擎反复访问,产生大量的重复内容。
对个别搜索引擎进行访问限制
有时候,你仅对大部分搜索引擎设置一个大而统之的访问规则是不够的,总有一些搜索引擎我们希望区别对待。看看下面这段访问规则。
# Google Image User-agent: Googlebot-Image Disallow: Allow: / # Google AdSense User-agent: Mediapartners-Google* Disallow: Allow: / # digg mirror User-agent: duggmirror Disallow: / # Alexa archiver User-agent: ia_archiver Disallow: / |
这段规则分别对Googlebot-Image、Google AdSense搜索引擎蜘蛛赋予了全站抓取指示,而对digg mirror与Alexa的Internet Archive的搜索引擎蜘蛛做了全站不允许抓取的指示。如果你不太明白这些到底是什么,那就别管它,就按照这个规则写吧!
不过特别要注意的是,一个搜索引擎指示下的规则组只针对这个搜索引擎,所以当针对Googlebot-Image、Google AdSense、或Alexa Internet Archive这些搜索引擎规定规则后,之前的”User-agent: *”下的所有规则就不在起作用了。
写到这里,WordPress博客的Robots.txt文件的阻止规则的主要部分就完成了。当然我们还缺少一个很重要的部分,为Robots.txt加上网站Sitemap文件指引。
指示站点地图位置
为robots.txt文件继续添加如下规则:
Sitemap:http://www.yuhua.org/sitemap.xml Sitemap:http://www.yuhua.org/sitemap_baidu.xml |
第一个规则告诉大部分搜索引擎,网站的Sitemap文件在哪里;第二个规则告诉百度搜索,它能读懂的Sitemap文件在哪里。不过,在加入以上规则前,一定要确保这两个文件的链接确实能够访问!以上两个规则对搜索引擎收录我们网站的网页有极重要的作用。
完成后的robots.txt
好了,终于把一份给WordPress博客使用的robots.txt文件完成了,我们来看一下完整的规则。
User-agent: * Disallow: /cgi-bin/ Disallow: /wp-admin/ Disallow: /wp-content/cache/ Disallow: /wp-content/languages/ Disallow: /wp-content/plugins/ Disallow: /wp-content/themes/ Disallow: /wp-content/upgrade/ Disallow: /wp-includes/ Disallow: /comments/ Disallow: /category/ Disallow: /tag/ Disallow: /page/ Disallow: /feed/ Disallow: /author/ Disallow: /trackback/ Disallow: /2010/ Disallow: /2011/ Disallow: /2012/ Disallow: /2013/ Disallow: /*/feed/ Disallow: /*/trackback/ Disallow: /*? Disallow: /*/*? Disallow: /*/*/*? Disallow: /*.php$ Disallow: /*.js$ Disallow: /*.inc$ Disallow: /*.css$ # Google Image User-agent: Googlebot-Image Disallow: Allow: / # Google AdSense User-agent: Mediapartners-Google* Disallow: Allow: / # digg mirror User-agent: duggmirror Disallow: / # Alexa archiver User-agent: ia_archiver Disallow: / Sitemap:http://www.yuhua.org/sitemap.xml Sitemap:http://www.yuhua.org/sitemap_baidu.xml |
这样的一份robots.txt文件,兼顾了WordPress博客网站的方方面面。如果你并不想深入研究WordPress与robots.txt文件,那么替换以上规则中Sitemap部分的网址为你的网站的网址,再复制到你的WordPress网站的robots.txt文件中就可以了!
robots.txt替代品:Robots Meta标签
Robots.txt文件针对整个网站提出访问的限制,如果你要针对个别页面作搜索引擎访问的限制的话,就应该在HTML文件中使用Robots Meta标签,一个Robots Meta标签形式如下。
<meta name="robots" content="noindex,follow"/> |
content部分通常有四个选项:index, noindex, follow, nofollow,分别告诉搜索引擎索引、不索引、继续爬行、不继续爬行这个网页。
如果你使用WordPress的SEO插件,比如Yoast WordPress SEO,或者All in One SEO Pack,那么在这些插件中,都有针对文章、页面、媒体等的Robots Meta的个别配置功能,可以大大简化你的WordPress SEO工作。
再多说几句
尽管robots.txt已经存在很多年了,但是各大搜索引擎对它的解读都有细微差别。Google与百度都分别在自己的站长工具中提供了robots工具,它们的链接附在了“参考阅读”部分中。如果你自己编写了robots.txt文件,我建议你在这两个工具中都进行测试,因为这两者的解析实现确实有细微差别。
参考阅读
本文由阿腾SEO整理,转载自The Observing Mind
请不要吝啬您的金玉良言,留言是对阿腾SEO最大的肯定。文章如有不妥或需要完善处,还请悉心指出,谢谢!
- 下一篇: 警惕WordPress主题functions.php包含的恶意代码
- 上一篇: 一月二十八日小记