SEO探索

中文网站搜索引擎优化技术研究


Web服务器技术

使用robots.txt的注意事项

2006/05/8

  通过我们之前的介绍,相信朋友们清楚了网站为什么要使用robots.txt及如何使用robots.txt控制搜索引擎的抓取。robots.txt的创建很简单,只需设置User-agent与Disallow两项内容,其中User-agent项设置特定的搜索引擎Spider,Disallow项设定不允许Spider抓取和索引的内容。尽管如此,笔者却常常见一些设置不当的例子,在此把robots.txt有关的注意事项介绍一下:

robots.txt文件

  robots.txt只能存放于网站的根目录下,置于除此之外的任何地方均不会被Spider发现。

  每个网站,或每个域名(包括子域名),只能有一个robots.txt。

  文件名“robots.txt”为小写字母,其他如Robots.txt或robots.Txt是不正确的,命名错误将会被Spider忽略。

  正如上篇文章中介绍的,Spider在网站内找不到robots.txt时将会被重定向到404 错误页面,这便有可能阻碍Spider抓取和收录页面。虽然这并不一定会发生,但很多时候我们没必要冒这样的风险,一般来说,即使我们对网站的所有内容都没有限制,对所有的搜索引擎Spider 都欢迎,最好也在根目录下创建一个robots.txt文件:

User-agent: *
Disallow:

robots.txt的语法规则

  在Disallow项中使用小写字母,即文件名和目录名使用小写字母,特别在对大小写敏感的Unix下更要注意。

  robots.txt惟一支持的通配符是在User-agent使用的“*”,其代表所有的Spider。除此之外,别的通配符均不可用。这方面的错误常见于在文件名或目录名中使用通配符。

  robots.txt的限定项

  在User-agent和Disallow项的设定中,每行只允许有一个设定值,同时,注意不要有空行。至于行数,则没有限制,理论上说可以根据需要创建具有无数行的robots.txt。

  下面即是一个错误的例子

User-agent: *
Disallow: /dir1/ /dir2/ /dir3/

  正确设置应为:

User-agent: *
Disallow: /dir1/
Disallow: /dir2/
Disallow: /dir3/

  robots.txt中的文件与目录

  既定某个文件拒绝索引时,格式为文件名(包括扩展名),其后无“/”,而限定目录时,则需在目录名后加“/”。如下面的示例:

User-agent: *
Disallow: /file.html
Disallow: /dir/

  特别注意的是,不要省略掉目录名后的“/”,不然,Spider便极有可能误读相应的设置。

  robots.txt中限定项的顺序

  请看下方的示例:

User-agent: *
Disallow: /
User-agent: Googlebot
Disallow:

  该设定本意是想允许Google访问所有页面,同时禁止其他Spider的访问。但在这样的设置下,Googlebot在读取前2行后便会离开网站,后面对其的“解禁”完全失去了意义。正确的格式应为:

User-agent: Googlebot
Disallow:
User-agent: *
Disallow: /

  robots.txt中的注释

  尽管在robots.txt的标准中,可以在限定项的后面使用“#”添加注释,如下面的例子

User-agent: Googlebot #这是对Google的设置
Disallow:

  但很多研究与测试表明,不少Spider对这样格式的解读存在问题。为确保其能更好地工作,最好采用如下设置:

#这是对Google的设置
User-agent: Googlebot
Disallow:

  Tags: , ,

为什么要使用robots.txt

2006/05/7

  我们曾介绍过使用robots.txt来控制搜索引擎抓取页面,同样地,我们也可以在页面文件中使用“noindex”或“nofollow”属性来控制搜索引擎Spider在网站内的爬行,那么,robots.txt对于网站是必需的么?

  理论上说,robots.txt只是告诉搜索引擎的Spider网站内哪些内容不允许其索引与收录,它并不是网站的必不可少的组成部分,一个未配置robots.txt的网站只不过对搜索引擎Spider的爬行不作限制而矣。从这个角度看,不设置robots.txt对网站功能没有影响。

  但另一方面,恰当地设置robots.txt,可以更好地维护Web 服务器,提高网站的综合性能。从这个角度,网站最好配置robots.txt。

Robots.txt带来的好处

  几乎所有的搜索引擎Spider都遵循robots.txt给出的爬行规则,协议规定搜索引擎Spider进入某个网站的入口即是该网站的robots.txt,当然,前提是该网站存在此文件。对于没有配置robots.txt的网站,Spider将会被重定向至404 错误页面,相关研究表明,如果网站采用了自定义的404错误页面,那么Spider将会把其视作robots.txt——虽然其并非一个纯粹的文本文件——这将给Spider索引网站带来很大的困扰,影响搜索引擎对网站页面的收录。

  robots.txt可以制止不必要的搜索引擎占用服务器的宝贵带宽,如email retrievers,这类搜索引擎对大多数网站是没有意义的;再如image strippers,对于大多数非图形类网站来说其也没有太大意义,但却耗用大量带宽。

  robots.txt可以制止搜索引擎对非公开页面的爬行与索引,如网站的后台程序、管理程序,事实上,对于某些在运行中产生临时页面的网站来说,如果未配置robots.txt,搜索引擎甚至会索引那些临时文件。

  对于内容丰富、存在很多页面的网站来说,配置robots.txt的意义更为重大,因为很多时候其会遭遇到搜索引擎Spider给予网站的巨大压力:洪水般的Spider访问,如果不加控制,甚至会影响网站的正常访问。

  同样地,如果网站内存在重复内容,使用robots.txt限制部分页面不被搜索引擎索引和收录,可以避免网站受到搜索引擎关于 duplicate content的惩罚,保证网站的排名不受影响。

robots.txt带来的风险及解决

  凡事有利必有弊,robots.txt同时也带来了一定的风险:其也给攻击者指明了网站的目录结构和私密数据所在的位置。虽然在Web服务器的安全措施配置得当的前提下这不是一个严重的问题,但毕竟降低了那些不怀好意者的攻击难度。

  比如说,如果网站中的私密数据通过www.yourdomain.com/private/index.html 访问,那么,在robots.txt的设置可能如下:

User-agent: *
Disallow: /private/

  这样,攻击者只需看一下robots.txt即可知你要隐藏的内容在哪里,在浏览器中输入www.yourdomain.com/private/ 便可访问我们不欲公开的内容。对这种情况,一般采取如下的办法:

  • 设置访问权限,对/private/中的内容实施密码保护,这样,攻击者便无从进入。
  • 另一种办法是将缺省的目录主文件index.html更名为其他,比如说abc-protect.html,这样,该内容的地址即变成www.yourdomain.com/private/abc-protect.htm,同时,制作一个新的index.html文件,内容大致为“你没有权限访问此页”之类,这样,攻击者因不知实际的文件名而无法访问私密内容。

  Tags: , ,

使用301 redirect避免Canonical Issues

2006/04/17

什么是Canonical Issues

  Canonical Issues应如何翻译成中文是件很困难的事, 8O 从字面上看,“Canonical”更多地与宗教有关,除此之外,还可以翻译成“权威的”,“权威性的”之类。不过,将Canonical Issues翻译成“权威内容”似乎也有不妥之处,在此,我们就不讨论它的译法了。

  所谓的Canonical Issues,在SEO方面主要是指如下的情况:在搜索引擎中,常常会把 yourdomain.com 、 www.yourdomain.com 与 yourdomain.com/index.html (或Default.htm)当成不同的站点。这样就会带来两个问题,道德,在这样的“不同”站点下其内容是相同的,即实质上我们上文所提的三个地址表示是同一个页面,这样,我们的站点就会面临搜索引擎关于 duplicate content(重复内容)的处罚;其次,即使未受到惩罚,也存在PageRank“流失”的情况,比如说搜索引擎认为我们的站点地址为http://yourdomain.com,那么当在别的网站对我们的链接指向使用www.yourdomain.com时,本来应该给我们带来的PageRank方面的提升便无法反应到我们的站点http://yourdomain.com上,无形中造成了PageRank的损失。

  另一种在中文网站上常见的情况是,很多朋友喜欢使用子域名,但是子域名的根目录往往是主域名的子目录,即类似这样的情况,http://sub.yourdomain.com实质上等同于http://www.yourdomain.com/sub,这也是Canonical Issues的另一种表现形式。

使用301 redirect避免Canonical Issues

  有关301 Redirect的使用方法,可参考301 Redirect 永久重定向的实现

  需要强调的是,对于在IIS上实现301 Redirect时,根据情况可能需要加上$S$Q 参数,其中$S 代表在跳转时可以传递子目录,(如/sub/test.html),而$Q 则可传递地址中的查询字串(如 ?id=30)。

  应该说,对大部分Canonical Issues的情况,只需要在Server端简单设置一下301 Redircet即可避免。

  Tags: ,

使用robots.txt控制搜索引擎抓取

2006/04/13

  搜索引擎数据库中的所有网页,都是由Robot程序自动抓取收录的。但我们网站上总会有部分私密性数据不希望被搜索引擎抓取,这时候,就需要robots.txt。

  robots.txt 是一个标准文档,意在阻止搜索引擎的Spider(蜘蛛)从您的 Web 服务器下载某些或全部信息,控制Spider的搜索范围。robots.txt的设置很简单,只要用记事本或其他文本编辑器,依照自己的网站需求,设定一系列选项,然后将其上传到网站根目录即可。robots.txt的设置如下:

User-agent: 搜索引擎的spider代号
Disallow: 输入数据夹或文件名的路径

  如设定所有的spider都能够搜索及抓取整个网站。

User-agent: *
Disallow:

  如拒绝Google搜索及抓取整个网站,但允许其它的

User-agent: Googlebot
Disallow:

  如拒绝所有的Spider

User-agent: *
Disallow: /

  如拒绝所有的Spider搜索及抓取protect目录及seo目录下abc.html文件

User-agent: *
Disallow: /protect/
Disallow: /seo/abc.html

  如拒绝google搜索及抓取protect目录及seo目录下abc.html文件,但允许其他的

User-agent: Googlebot
Disallow: /protect/
Disallow: /seo/abc.html

  很简单吧?另有一点请记住,搜索引擎不会立即对robots.txt 文件所作的更改作出反应,必须等到搜索引擎下一次读取该文件。这段时间,依搜索引擎及具体网站情况,从几小时到几天不等。

  Tags:

301 Redirect 永久重定向的实现

2006/04/12

  在我们的网站建设中,时常会遇到需要网页重定向的情况:象网站调整,如改变网页目录结构,网页被移到一个新地址,再或者,网页扩展名改变,如因应用需要把.php改成.Html或.shtml,在这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户还会得到一个404页面错误信息,访问流量白白丧失;再如某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点,等等。

  常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh:

  • 301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。
  • 302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。
  • meta fresh: 这在2000年前比较流行,不过现在已很少见。其具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之內),会被判断为spam。

  这里我们主要谈谈如何通过301 Redirect实现网页重定向

IIS服务器实现301重定向

* 打开internet信息服务管理器,在欲重定向的网页或目录上按右键,见下图
* 选中“重定向到URL”
* 在对话框中输入目标页面的地址
* 切记,记得选中“资源的永久重定向”
* 当然,最后要点击“应用”

在IIS下配置301永久重定向

Apache服务器实现301重定向

  相比较来说,Apache实现起来要比IIS简单多了。在Apache中,有个很重要的文件.htaccess,通过对它的设置,可以实现很多强大的功能,301重定向只是其中之一。

Redirect permanent / http://seo.highdiy.com/ ;将目录下内容重定向到http://seo.highdiy.com/
redirect permanent /old.html http://seo.highdiy.com/new-url/ ;将网页old.html内容重定向到http://seo.highdiy.com/new-url/

  通过合理地配置重定向参数中的正则表达式,可以实现更复杂的匹配。有兴趣的朋友可参考Apache手册。

  其他方法还有:

PHP下的301重定向

<? Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://seo.highdiy.com" );?>

ASP下的301重定向

<%@ Language=VBScript %>
<% Response.Status=”301 Moved Permanently” Response.AddHeader “Location”, ” http://seo.highdiy.com”>

ASP .NET下的301重定向

<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”http://seo.highdiy.com”);
}
</script>

  配置完成后,要认真检查一下是否正确。Internet有很多类似的Server Header检查工具,如Check Server Headers Tool - HTTP Status Codes Checker或本站提供的这个网页重定向检查工具。

  Tags: