第4章 网站结构优化
网站内的优化大致可以分为两部分,一是网站结构调整,二是页面上针对关键词的相关性优化。本章讨论网站结构优化。
网站结构是SEO的基础。SEO人员对页面优化讨论得比较多,如页面上关键词怎样分布,标题标签怎样撰写等,对网站结构的讨论则比较少。其实网站结构的优化比页面优化更重要,掌握起来也更困难。
从SEO角度看,优化网站结构要达到以下几个目的。
1.用户体验
用户访问一个网站必须能够不假思索地自如点击链接,找到自己想要的信息。这有赖于良好的导航系统,适时出现的内部链接,准确的锚文字。从根本上说,用户体验好的网站也是搜索引擎喜欢的网站,用户在网站上的行为方式也很可能被计入排名算法中。
2.收录
网站页面的收录在很大程度上依靠良好的网站结构。理论上,清晰的网站结构很容易说清楚,只要策划好分类或频道,然后在分类下加入产品页面,整个网站自然形成树形结构。在实际操作中,大中型网站往往会形成一个异常复杂的链接结构,怎样使搜索引擎蜘蛛能顺利爬行到所有内部页面是一个很大的挑战。
3.权重分配
除了外部链接能给内部页面带来权重外,网站本身的结构及链接关系是内部页面权重分配的重要因素。哪些页面具备比较高的排名能力,取决于页面得到的权重。SEO人员必须有意识地规划好网站所有页面的重要程度,通过链接结构把权重倾向重要页面。
4.锚文字
锚文字是排名算法很重要的一部分。网站内部链接锚文字是站长自己能控制的,所以是最主要的增强关键词相关性的方法之一。在这方面维基百科是SEO人员应该学习的典范,其内部链接及锚文字使用达到了非常高的水平。
本章经常会提到分类、频道、栏目、产品、文章等页面名称。其中分类、频道和栏目页面从网站结构角度看是一回事儿,只不过电子商务网站常称其为分类,门户网站喜欢称其为频道,信息类网站又可能称其为栏目。为了叙述简洁,后面大部分情况下不再表达为“分类、频道或栏目页面”,只写“分类”页面,但读者应该清楚,优化“分类”页面的技术同样适用于频道和栏目页面,它们在网站结构意义上是完全一样的。产品、文章页面也是如此。
4.1 搜索引擎友好的网站设计
如果我们从搜索引擎蜘蛛的角度去看待一个网站,在抓取、索引和排名时会遇到哪些问题呢?解决了这些问题的网站设计就是搜索引擎友好(search engine friendly)的。
1.搜索引擎蜘蛛能不能找到网页
要让搜索引擎发现网站首页,就必须要有外部链接连到首页,找到首页后,蜘蛛沿着内部链接找到更深的内容页,所以要求网站要有良好的结构,符合逻辑,并且所有页面可以通过可爬行的普通HTML链接达到。JavaScript链接、Flash中的链接等搜索引擎蜘蛛一般不能跟踪爬行,就会造成收录问题。
网站所有页面离首页点击距离不能太远,最好在四五次点击之内。要被搜索引擎收录,页面需要有最基本的权重,良好的网站链接结构可以适当传递权重,使尽量多的页面达到收录门槛。
2.找到网页后能不能抓取页面内容
被发现的URL必须是可以被抓取的。数据库动态生成、带有过多参数的URL、Session ID、整个页面是Flash、框架结构(frame)、可疑的转向、大量复制内容等都可能使搜索引擎敬而远之。
某些文件站长可能不希望被收录,除了不链接到这些文件,更保险的方法是使用robots文件或meta robots标签禁止收录。
3.抓取页面后怎样提炼有用信息
关键词在页面重要位置的合理分布、重要标签的撰写、HTML代码精简、起码的兼容性等可以帮助搜索引擎理解页面内容,提取有用信息。这部分在第5章“页面优化”部分再深入讨论。
只有搜索引擎能顺利找到所有页面,抓取这些页面并提取出其中真正有相关性的内容,网站才可以被视为是搜索引擎友好的。
网上搜索引擎不友好的网站比比皆是,尤其是一些中小企业网站。不过这样的网站不太好举例,没得到网站主人的许可就当做负面案例讨论非常不恰当。在写本节时刚好在zaccode.com网站看到一个会员询问搜索引擎不收录他们的内页是怎么回事。笔者点击过去看了一下,不由得惊呼,这个网站简直是集搜索引擎不友好之大成,是个相当不错的反面教材。在得到网站所有人正式许可后,在这里作为例子简单介绍。
网站域名是llyez.com,南昌良良母婴用品有限公司,一个母婴保健及家居用品企业网站。应该说网站视觉设计还是不错的,然而从SEO角度看,简直就是个“杯具”。首页抓图如图4-1所示。
图4-1 良良母婴用品网站首页
除了页脚的联系地址、版权声明两行字外,页面其他部分就是一个大的Flash,源代码如下:
搜索引擎蜘蛛访问首页后,完全没有任何一个链接能通向内页,倒是有指向网站设计服务商及备案网站的链接。搜索引擎既不能抓取和索引Flash中的文字内容,也不能跟踪链接爬到内页。如果不给内部页面直接造些外链的话,整个网站能被收录的基本上只有首页一个页面,其内容还不能被索引。
单击左侧婴儿保健用品链接(Flash中的链接)进入内页,如图4-2所示。
图4-2 婴儿保健用品页面
看起来设计不错。可惜的是,除了左下角的新闻中心部分,页面上的其他文字、图片还是一个大Flash,包括顶部的导航条。所以就算站长给这个婴儿用品页面造一些外链,收录又到此为止了。企业概况、商品中心、在线商城等重要部分的页面还是没有任何爬行通路。
左下角的新闻中心设计也有些奇怪,鼠标放上去时才显示链接,而且只显示了一半,如图4-3所示。
图4-3 新闻中心链接
单点击第一篇新闻中心文章后来到如图4-4所示的这个页面。
图4-4 新闻页面及URL
顶部导航依然是Flash,从新闻中心爬到产品页面也不可能了。另一个可怕的地方是URL,读者可以在抓图地址栏中看到一部分。下面是HTML代码的相应部分,读者可以看到完整的网址。
这种URL就算有外部链接,想被收录也难。
从婴儿用品首页单击商品中心来到如图4-5所示页面。
图4-5 商品中心页面及URL
同样,导航还是Flash。值得欣慰的是左侧产品链接是普通HTML链接,不过单击任何一个产品都可以看到长长的URL,如图4-6所示。
图4-6 产品页面及URL
带有这么多参数的URL,被收录的可能性很低,除非是个权重非常高的网站。这些链接相应的HTML代码如下:
对比首页、商品中心首页及产品页面标题,大家可以看到这个网站上除了新闻中心的几个页面之外,其他所有页面包括企业概况、商品中心、在线商城、在线调查等页面标题全都一样。
读者看到本书再去访问时,这个网站也许已经不是这个样子了。这是一个典型的搜索引擎不友好的企业网站,只考虑到视觉设计,完全没顾及到怎样被搜索引擎收录,怎样获得搜索流量。读者看完第4章和第5章,再回头看一遍这个例子,会更了解这个网站为什么不搜索引擎友好,应该怎样改进。
4.2 避免蜘蛛陷阱
有一些网站设计技术对搜索引擎来说很不友好,不利于蜘蛛爬行和抓取,这些技术被称为蜘蛛陷阱。常见的应该全力避免的蜘蛛陷阱包括如下这些。
4.2.1 Flash
在网页的某一小部分使用Flash增强视觉效果是很正常的,比如用Flash做成的广告、图标等。这种小Flash和图片是一样的,只是HTML代码中的很小一部分,页面上还有其他以文字为主的内容,所以对搜索引擎抓取和收录没有影响。
但是有的网站整个首页就是一个大的Flash文件,这就构成了蜘蛛陷阱。搜索引擎抓取的HTML代码只有一个连向Flash文件的链接,没有其他文字内容。读者可以参考前面例子的源代码。搜索引擎是无法读取Flash文件中的文字内容和链接的。这种网站整个就是一个Flash的网站,可能视觉效果做得精彩异常,可惜搜索引擎看不到,不能索引出任何文字信息,也就无从判断相关性。
有的网站喜欢在首页放一个Flash动画片头(Flash Intro),用户访问网站看完片头后被转向到真正的HTML版本的文字网站首页。搜索引擎不能读取Flash,一般也没办法从Flash Intro跟踪到HTML版本页面。
近几年搜索引擎不停尝试读取Flash文件,尤其是里面的文字内容和链接,也取得了一定进展。站长可以使用SWFObject和sIFR技术使Flash文件更易于被搜索引擎读取。不过我的观点是,与其费劲去研究怎么让搜索引擎读取Flash文件,不如做成普通的HTML版本的网站。如果你的网站除了Flash外不足以展现公司实力,那么你的公司应该是世界500强级别的,SEO就不重要了。
整个网站就是一个大Flash文件,从SEO角度来说是万万不可的。如果Flash效果是必需的,至少也需要在首页加上一个通往HTML版本的链接。这个链接应该是在Flash文件之外的HTML代码中,搜索引擎跟踪这个链接可以抓取后面的HTML版本页面。
4.2.2 Session ID
有些网站使用Session ID(会话ID)跟踪用户访问,每个用户访问网站时都会生成独特唯一的Session ID,加在URL中。搜索引擎蜘蛛的每一次访问也会被当成一个新的用户,URL中会加上一个不同的Session ID,这样搜索引擎蜘蛛每次来访问时所得到的同一个页面的URL将不一样,后面带着一个不一样的Session ID。这也是最常见的蜘蛛陷阱之一。
搜索引擎遇到这种长长的Session ID,会尝试判断字符串是Session ID还是正常参数,成功判断出Session ID就可以去掉Session ID,收录正常URL。但也经常判断不出来,要么不愿意收录,要么收录多个带有不同Session ID的URL,内容却完全一样,形成大量复制内容,这两种情况对网站优化都不利。
通常建议跟踪用户访问应该使用cookies而不要生成Session ID。或者程序判断访问者是搜索引擎蜘蛛还是普通用户,如果是搜索引擎蜘蛛,则不生成Session ID。跟踪搜索引擎蜘蛛访问是没什么意义的,蜘蛛既不会填表,也不会把商品放入购物车。
4.2.3 各种跳转
除了后面会介绍的301转向以外,搜索引擎对其他形式的跳转都比较敏感,如302跳转、JavaScript跳转、Flash跳转、Meta Refresh跳转。
有些网站用户访问首页时会被自动转向到某个目录下的页面。如果是按用户地理位置转向至最适合的目录,那倒情有可原。但大部分这种首页转向看不出任何理由和目的,这样的转向能避免则避免。
如果必须转向,301转向是搜索引擎推荐的、用于网址更改的转向,可以把页面权重从旧网址转移到新网址。其他转向方式都对蜘蛛爬行不利,原因在于后面作弊一章所要介绍的,黑帽SEO经常使用转向欺骗搜索引擎和用户。所以除非万不得已,尽量不要使用301转向以外的跳转。
4.2.4 框架结构
如果作为站长的你不知道什么是框架结构(Frame),那么恭喜你,你已经避免了这个蜘蛛陷阱,根本没必要知道什么是框架结构。如果你在网站设计中还在使用框架结构,我的建议是立即取消。
使用框架结构设计页面,在网站诞生初期曾经挺流行,因为对网站的页面更新维护有一定方便性。不过现在的网站已经很少使用框架了,不利于搜索引擎抓取是框架越来越不流行的重要原因之一。对搜索引擎来说,访问一个使用框架的网址所抓取的HTML只包含调用其他HTML文件的代码,并不包含任何文字信息,搜索引擎根本无法判断这个网址的内容是什么。虽然蜘蛛可以跟踪框架中所调用的其他HTML文件,但是这些文件经常是不完整的页面,比如没有导航只是正文。搜索引擎也无法判断框架中的页面内容应该属于主框架,还是属于框架调用的文件。
总之,如果你的网站还在使用框架,或者你的老板要使用框架结构,唯一要记住的是,忘记使用框架这回事。和Flash一样,别浪费时间研究怎么让搜索引擎收录框架结构网站。
4.2.5 动态URL
动态URL指的是数据库驱动的网站所生成的、带有问号、等号及参数的网址。一般来说动态URL不利于搜索引擎蜘蛛爬行,应该尽量避免。下面对动态URL及其静态化还有更详细的讨论。
4.2.6 JavaScript链接
由于JavaScript可以创造出很多吸引人的视觉效果,有些网站喜欢使用JavaScript脚本生成导航系统。这也是比较严重的蛛蛛陷阱之一。虽然搜索引擎都在尝试解析JS脚本,不过我们不能寄希望于搜索引擎自己去克服困难,而要让搜索引擎跟踪爬行链接的工作尽量简单容易。
据我观察,虽然有的搜索引擎在技术上可以获得JavaScript脚本中包含的链接,甚至可以执行脚本并跟踪链接,但对一些权重比较低的网站,搜索引擎觉得没有必要,不会费那个劲。所以网站上的链接必须使用最简单标准的HTML链接,尤其是导航系统。用CSS做导航系统一样可以实现很多视觉效果。
JavaScript链接在SEO中也有特殊用途,那就是站长不希望被收录的页面(比如没有排名意义的页面,重复内容页面等),不希望彻底权重的链接,可以使用JavaScript脚本阻挡搜索引擎爬行。
4.2.7 要求登录
有些网站内容放在需要用户登录之后才能看到的会员区域,这部分内容搜索引擎无法看到。蜘蛛不能填写用户名、密码,也不会注册。
4.2.8 强制使用Cookies
有些网站为了实现某种功能,如记住用户登录信息、跟踪用户访问路径等,强制用户使用Cookies,用户浏览器如果没有启用Cookies,页面显示不正常。搜索引擎蜘蛛就相当于一个禁用了Cookies的浏览器,强制使用Cookies只能造成搜索引擎蜘蛛无法正常访问。
4.3 物理及链接结构
网站结构有两方面的意思,一是物理结构,二是链接结构。
4.3.1 物理结构
网站物理结构指的是网站真实的目录及文件所在的位置所决定的结构。
一般来说比较合理的物理结构有两种。一种是扁平式的,也就是所有网页文件都存在网站根目录下:
● http://www.domain.com/index.html
● http://www.domain.com/catA.html
● http://www.domain.com/catB.html
● http://www.domain.com/pageA.html
● http://www.domain.com/pageB.html
● http://www.domain.com/pageC.html
……
这比较适合小型网站。如果有太多文件放在根目录下,制作和维护起来都比较麻烦,容易搞乱。大中型网站把文件都放在根目录下基本上就无法管理了。
扁平物理结构的一个优势是,很多人认为根目录下的文件比深层目录中的文件天生权重高一点。比如,如果其他条件相同,URL:
http://www.domain.com/pageA.html
比URL:
http://www.domain.com/catA/pageA.html
排名能力高一点。
第二种是树形结构,或称为金字塔形结构。根目录之下以目录形式分成多个产品分类(或称为频道、类别、目录、栏目等),然后在每一个分类下再放上属于这个分类的具体产品(或称为文章、帖子等)页面。
比如分类分为:
……
分类下再放入具体的产品页面:
● http://www.domain.com/catA/product-a.html
● http://www.domain.com/catA/product-b.html
● http://www.domain.com/catA/product-c.html
● http://www.domain.com/catB/product-d.html
● http://www.domain.com/catB/product-e.html
● http://www.domain.com/catC/product-f.html
……
树形结构逻辑清晰,页面之间的隶属关系一目了然。
需要说明的是,这里说物理结构是“真实的目录及文件所在的位置所决定的结构”,只是为了方便说明和理解。数据库驱动、程序生成的网站并不存在真实的目录和文件,URL中的目录和文件都是程序实时生成的,但就网站结构来说,与真实存在的目录和文件没有什么区别。
4.3.2 链接结构
网站结构的第二个意义指的是链接结构,或称为逻辑结构,也就是由网站内部链接形成的链接的网络图。
比较合理的链接结构通常是树形结构,如图4-7所示。
图4-7 树形网站链接结构示意图
H为网站首页,C1和C2是分类首页,P1、P2是分类C1下产品页面,P3、P4是分类C2下产品。其中的链接关系如下:
● 首页链接向所有分类首页。
● 首页一般不直接链接向产品页,除了几个需要特殊推广的产品,如P3。
● 所有分类首页连向其他分类首页,一般以网站导航形式体现。
● 分类首页都链接回网站首页。
● 分类首页链接向本分类下的产品页。
● 分类首页一般不链接向其他分类的产品页。
● 产品页都链接向网站首页,一般以网站导航形式体现。
● 产品页链接向所有分类首页,一般以网站导航形式体现。
● 产品页可以链接向同一个分类的其他产品页。
● 产品页一般不链接向其他分类的产品页。
● 在某些情况下,产品页可以用适当的关键词链接向其他分类的产品页,如P2链接向P3。
从图示和说明可以看到,这些链接会很自然地形成一个树形的网络图。这种链接网络可以与物理结构重合,也可以不一样,比如扁平式的物理结构网站完全可以通过链接形成链接上的树形结构。
当然实际网站的链接结构要复杂得多,一级分类不可能只有两个,下面还可能有二级、三级分类,末级分类可能有很多个翻页,还可能有各种排序页面等。但网站链接基本形式大体相同。
对搜索引擎来说更重要的是链接结构,而不是物理结构。不少人有误解,认为物理结构比较深的页面不容易被搜索引擎收录,比如说:
http://www.domain.com/cat1/cat1-1/cat1-1-1/pageA.html
像这样物理目录结构比较深的URL,是不是就不容易被收录呢?那不一定。如果这个页面在网站首页上有一个链接,对搜索引擎来说它就是一个仅次于首页的链接结构意义上的二级页面。收录容易与否在于页面处于链接结构的什么位置,离首页有几次点击距离,而不是它的目录层次。
树形链接结构使权重在网站各页面上均匀分布,深层内页可以从首页4~5次点击内达到。但当网站规模比较大时,还是会出现各种问题,4.14节将着重讨论对树形链接结构的补充和修改。
4.4 清晰导航
清晰的导航系统是网站设计的重要目标,对网站信息架构、用户体验影响重大。SEO也越来越成为导航设计时需要考虑的因素之一。
站在用户角度,网站导航系统需要解决两个问题。
(1)我现在在哪里?用户可能从任何一个内页进入网站,有的时候从首页进入,点击多个链接后,用户也已经忘了是怎么来到当前页面的。导航系统这时就要清楚地告诉用户现在处在网站总体结构的哪一部分。
页面设计风格的统一、面包屑导航的使用、主导航系统当前所在分类高亮都有助于用户判断自己现在在哪里。
(2)下一步要去哪里?有的时候用户知道自己想做什么,页面的导航设计要告诉用户点击哪里才能完成他的目标。有的时候用户也不知道自己该干什么,网站导航就要给用户一个最好的建议,引导用户流向网站目标完成页面。
合理的导航及分类名称、正文中的相关链接、引导用户把产品放入购物车的按钮、相关产品推荐、网站地图、站内搜索框等都有助于帮助用户点击到下一步。
站在SEO的角度,网站导航系统应该注意以下几点。
1.文字导航
尽量使用最普通的HTML文字导航,不要使用图片作为导航链接,更不要使用JavaScript生成导航系统,也不要用Flash做导航。CSS也可以设计出很好的视觉效果,如背景、文字颜色变化,下拉菜单等。
最普通的文字链接对搜索引擎来说是阻力最小的爬行抓取通道。导航系统链接是整个网站收录最重要的内部链接,千万不要在导航上给搜索引擎设置任何障碍。
2.点击距离及扁平化
良好导航的目标之一是使所有页面与首页点击距离越近越好。权重普通的网站,内页离首页不要超过四五次点击。要做到这一点,通常应该在链接结构上使网站尽量扁平化。
网站导航系统的安排对减少链接层次至关重要。主导航中出现的页面将处于仅低于首页的层次,所以主导航中页面越多,网站越扁平。但用户体验和页面链接总数都不允许主导航中有太多链接。SEO人员需要在网站规模、用户体验中做好平衡。
3.锚文字包含关键词
导航系统中的链接通常是分类页面获得内部链接的最主要来源,数量巨大,其锚文字对目标页面相关性有相当大的影响,因此分类名称应尽量使用目标关键词。当然首先要顾及用户体验,导航中不能堆积关键词,分类名称以2~4个字为宜。
4.面包屑导航
面包屑导航对用户和搜索引擎来说,是判断页面在网站整个结构中的位置的最好方法。正确使用面包屑导航的网站通常都是架构比较清晰的网站,强烈建议使用,尤其是大中型网站。
5.避免页脚堆积
随着SEO被更多站长认识,近几年有一种在页脚堆积富含关键词的分类页面链接的倾向。两三年前这种做法还有不错的效果,但是近来搜索引擎比较反感这种做法,常常造成某种形式的惩罚。
4.5 子域名和目录
搜索引擎通常会把子域名(或称为二级域名)当做一个基本独立的站点看待,也就是说
和
是两个互相独立的网站。
而目录
就纯粹是http://www.domain.com的一部分。
顺便说一句,www.domain.com其实是domain.com的一个子域名,只是约定俗成,网站一般以www.domain.com为主URL。
如果抛开其他因素,只看这两个URL:
子域名http://news.domain.com的权重稍微高一点,因为搜索引擎会把这个URL当做网站的首页。另外很多人观察到,主域名很多时候会传递一小部分信任度(是信任度,不是PR)给子域名。
所以单就URL来看,子域名比目录天生的权重和排名能力稍微高一点。但从SEO角度看,我建议尽可能使用目录,而不是子域名。
子域名和主域名是两个完全不同的网站,要推广的也是两个网站,所有的优化工作都要多做一遍,尤其是外部链接建设,网站PR值、权重都会被这两个独立的网站分散。主域名经过外链建设获得高权重,不意味着子域名就获得了高权重。
子域名的使用会使网站变多,同时使每个子域名网站变小。目录会使一个网站越做越大。网站越大,包含的内容自然就越多,对用户的帮助越大,它所累积的信任度就更高。
当然,这只是对一般网站而言的。在某些情况下,子域名是更适当的。比如:
● 网站内容足够多,每一个子域名下涵盖的内容都足以成为一个独立的网站而毫不逊色。有很多这样的网站,诸如各类门户。像新浪、搜狐这种级别的网站,任何一个频道的内容都比绝大多数网站多得多。
● 跨国公司不同国家的分部或分公司,采取子域名有利于建立自己品牌。而且各个分公司的网站内容很可能是由不同国家的团队自行维护的,与独立网站没什么区别。
● 公司有不同的产品线,而且相互之间联系不大,或者完全是以不同的品牌出现的,这时每一个品牌或产品线可以用子域名甚至独立域名。如几乎所有汽车公司每一个品牌甚至每一个车型都有自己独立的品牌和网站。手机公司也如此。门户类网站推出不同服务时,如博客、微博、论坛、邮件,也以子域名为宜。
● 分类信息网站,不同城市使用不同的子域名。这类分类信息网站通常都有海量数据,某一个省份或城市的内容都能独立成站。而且不同城市、省份很可能有不同的发展目标和安排,管理也是由不同的团队操作的。
● 平台类网站,如B2B和淘宝类的商城。每个用户都有自己相对独立的展示平台,使用自己的子域名对品牌建设、推广有好处。
除了网站规模和类型,子域名和目录的选择有时还得看其他情况。比如,目标搜索引擎如果是百度,使用子域名或独立域名更有利,因为百度给网站首页权重更高。相比之下,Google给予网站首页、目录及内页大致相同的机会。如果是做英文网站,采用目录结构,不会出现明显的不利。
4.6 禁止收录机制
有的时候,站长并不希望某些页面被抓取和收录,如付费内容、还在测试阶段的页面、复制内容页面等。网站上不出现链接,或者使用JavaScript、Flash链接,使用nofollow等方法都不能保证页面一定不被收录。站长自己虽然没有链接到不想被收录的页面,其他网站可能由于某种原因出现导入链接,导致页面被收录。
要确保页面不被收录,需要使用robots文件或Meta Robots标签。
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:
Disallow:禁止的目录或文件必须分开写,每个一行,不能写成:
Disallow:/cgi-bin//tmp//aa/index.html
下面的指令相当于允许所有搜索引擎抓取任何内容:
下面的代码禁止除百度外的所有搜索引擎抓取任何内容:
Allow:告诉蜘蛛应该抓取某些文件。由于不指定就是允许抓取,Allow:单独写没有意义,Allow和Disallow配合使用,可以告诉蜘蛛某个目录下大部分不允许抓取,只允许抓取一部分。例如,下面的代码将使蜘蛛不抓取/ab/目录下其他目录和文件,但允许抓取其中/cd/目录下的内容:
$通配符:匹配URL结尾的字符。例如,下面的代码将允许蜘蛛抓取以.htm为后缀的URL:
下面的代码将禁止百度抓取所有.jpg文件:
*通配符:告诉蜘蛛匹配任意一段字符。例如,下面一段代码将禁止蜘蛛抓取所有htm文件:
Sitemaps位置:告诉蜘蛛XML网站地图在哪里,格式为:
Sitemap:<网站地图位置>
主流搜索引擎都遵守robots文件指令,robots.txt禁止抓取的文件搜索引擎将不访问,不抓取。但要注意的是,被robots文件禁止抓取的URL还是可能出现在搜索结果中。只要有导入链接指向这个URL,搜索引擎就知道这个URL的存在,虽然不会抓取页面内容,但是可能以下面几种形式显示在搜索结果中:
● 只显示URL,没有标题、描述。Google常这样处理。
● 显示开放目录或雅虎等重要目录收录的标题和描述。
● 导入链接的锚文字显示为标题和描述。百度常这样处理。
要想使URL完全不出现在搜索结果中,需要使用页面上的meta robots标签。
4.6.2 meta robots标签
meta robots标签是页面head部分meta标签的一种,用于指令搜索引擎禁止索引本页内容。
最简单的meta robots标签格式为:
<meta name="robots"content="noindex,nofollow">
上面标签的意义是禁止所有搜索引擎索引本页面,禁止跟踪本页面上的链接。
Google、必应、雅虎都支持的meta robots标签如下。
● NOINDEX:告诉蜘蛛不要索引本页面。
● NOFOLLOW:告诉蜘蛛不要跟踪本页面上的链接。
● NOSNIPPET:告诉搜索引擎不要在搜索结果中显示说明文字。
● NOARCHIVE:告诉搜索引擎不要显示快照。
● NOODP:告诉搜索引擎不要使用开放目录中的标题和说明。
百度的官方说法是目前只支持NOFOLLOW和NOARCHIVE。
meta robots标签内容可以写在一起,以逗号间隔,中间可以有空格,也可以没有。多个meta robots内容也可以写成不同标签。
<META NAME="ROBOTS"CONTENT="NOINDEX">
<META NAME="ROBOTS"CONTENT="NOFOLLOW">
与下面这个是一样的:
<META NAME="ROBOTS"CONTENT="NOINDEX,NOFOLLOW">
meta robots标签不区分大小写。
只有禁止索引时,使用meta robots才有意义。以下这个标签:
<META NAME="ROBOTS"CONTENT="INDEX,FOLLOW">
是没有意义的,等于没写。普通需要被收录、索引,链接需要被跟踪的页面,不用写meta●robots标签。
这个标签有时会用到:
<meta name="robots"content="noindex">
效果是禁止索引本页面,但允许蜘蛛跟踪页面上的链接,也可以传递权重。
使用了noindex meta robots标签的页面会被抓取,但不会被索引,页面URL不会出现在搜索结果中,这一点与robots文件不同。
4.7 nofollow的使用
nofollow是2005年由Google领头新创的一个标签(严格说是属性),目前主流搜索引擎包括百度、雅虎、必应等都已支持。
nofollow代码形式为:
<a href="http://www.example.com/"rel="nofollow">这里是锚文字</a>
链接的nofollow属性只适用于本链接。上一节介绍的Meta Robots标签中的noindex指的是页面上的所有链接。
nofollow最初目的是减少垃圾链接对搜索引擎排名的影响,标签意义是告诉搜索引擎这个链接不是经过站长自己编辑的,所以这个链接不是一个信任投票。搜索引擎看到这个标签就不会跟踪爬行链接,也不传递链接权重和锚文字。
nofollow标签通常用在博客评论、论坛帖子、社会化网站、留言板等地方,因为在这些地方任何用户可以自由留下链接,站长一般并不知道链接连向什么网站,也不可能一一查看验证,所以是垃圾链接最多出现的地方。现在主流的博客和论坛软件都自动在评论和帖子的链接中加上了nofollow。
后来nofollow又有了另外一个用途,用于广告链接。网络广告的初衷应该是曝光率和点击流量,而不是PR值或试图影响搜索引擎排名。但广告同时也是个链接,会影响权重流动和搜索引擎排名。搜索引擎对试图影响、操纵排名的链接买卖是深恶痛绝的。给广告链接加上nofollow可以告诉搜索引擎,这是个广告,请不要传递链接权重。
由于nofollow属性能阻止蜘蛛爬行和传递权重,因此很快又被SEO用在某些内部链接,以达到控制内部链接权重和PR流动及分布的目的。最常见的应用是在联系我们、隐私权政策、用户条款、用户登录等链接上。这些页面往往有整站链接,如果没有使用nofollow,整站的链接权重会平等地流动到这些网页上。而像隐私权政策这种网页一般来说用户很少关心,想通过搜索排名带来流量的可能性也极低。所以流动到这些搜索价值不高网页的权重浪费了很大一部分。
nofollow还可以用于其他搜索价值不大因而不需要权重的页面,如电子商务网站产品列表的各种排序方式、显示格式等。
有的网站通过nofollow控制权重流动,将权重导向需要收录和排名的页面后,整体收录、排名和流量有明显提高。但有时候没有明显效果。
也有人认为,用nofollow控制链接和权重流动是个迷思,有欺骗搜索引擎之嫌,因为展现给用户和搜索引擎的内容不一样。提高网站内部链接效率依赖于合理的网站架构,而不是使用nofollow标签。
Google资深工程师Matt Cutts曾对此评论说,nofollow使用在内部链接上,确实能够影响Google排名,但这只是次要因素。好比你有100块钱,使用nofollow就好像仔细研究怎么花这100块钱,对一些人有帮助。但更有用的是把精力放在怎么再多挣300块钱,而不是琢磨怎么花这现有的100块钱。
2008年上半年的某个时间,Google对nofollow链接权重传递算法做了改变。假设页面PR和权重有10块钱可以传递,页面上有10个链接,在nofollow标签出现之前,每个链接传递1块钱。如果其中5个链接加了nofollow,2008年的算法改变之前,剩下的没有nofollow的5个链接,每个链接传递2块钱,改变之后的处理方式是,剩下的5个非nofollow链接还是传递1块钱。当然,改变前后,nofollow链接都不传递PR。也就是说,2008年之后,加了nofollow相当于浪费了PR和权重,页面本来有的10块钱,只传递出去5块,还有5块消失了。
Google在做了这个变动一年多之后,2009年6月Matt Cutts才在博客上宣布。在这一年多时间里,没有人注意到这个算法变动。这说明nofollow的具体细节和效果远不是SEO人员所能掌握的。更宽泛点看,页面链接怎样分配和传递权重很可能更为复杂,并不是平均分配的。比如,导航及博客评论等地方的链接能传递的权重可能本来就很少。就算没有nofollow的存在,博客评论里的链接传递与正文里的链接一样的权重本来就不太合理。
其他搜索引擎怎样处理nofollow链接权重分配,目前还是未知的。
4.8 URL静态化
URL静态化一直以来都是最基本的SEO要求之一,但近一两年SEO行业对是否一定要做静态化有了一些观念上的改变。
4.8.1 为什么静态化
现在的网站绝大多数是数据库驱动,页面由程序实时生成,而不是真的在服务器上有一个静态HTML文件存在。当用户访问一个网址时,程序根据URL中的参数调用数据库数据,实时生成页面内容。因此动态页面相对应的URL原始状态也是动态的,包含问号、等号及参数,如下面这种典型论坛的URL:
http://www.domain.com/viewthread.php?tid=70376&extra=page=1
搜索引擎在发展初期(其实也就是10年前到三四年前而已)一般不太愿意爬行和收录动态URL,主要原因是可能陷入无限循环或收录大量重复内容,造成资源极大浪费。最典型的无限循环就是某些网站上出现的万年历,很多博客都按时间存档,一些宾馆、航班查询网站都经常出现万年历形式,如图4-8所示。
图4-8 万年历使蜘蛛可以无限点击下去
搜索引擎蜘蛛碰到万年历,如果一直跟踪上面的链接,可以不停地点击下一月、下一年,无穷无尽陷入无限循环,每一个日期对应的页面内容也没什么区别。真实用户一眼就能看出这是个日历,但搜索引擎蜘蛛面对的只是一串代码,不一定能判断出其实这是个万年历。
有时就算不存在无限循环,动态URL也可能造成大量复制页面。比如URL:
http://www.domain.com/product.php?color=red&cat=shoes&id=12345
和URL:
http://www.domain.com/product.php?cat=shoes&color=red&id=12345
及URL:
http://www.domain.com/product.php?color=red&id=12345&cat=shoes
很可能是完全一样的内容,都是型号为12345的红色鞋子。URL中参数顺序不同就是不同的网址,但调用参数一样,因此页面内容是一样的。如果CMS系统设计不周全,这些URL都可能出现在网站上。
更麻烦的是有时某些参数可以是任意值,服务器都能正常返回页面,虽然内容全是一样或非常相似的。例如,上面URL中的参数12345改为6789或其他什么数字,服务器很可能也返回200状态码。
所以以前的搜索引擎对动态URL敬而远之,要想网站页面被充分收录,站长需要把动态URL转化为静态URL。
4.8.2 怎样静态化URL
最常见的方法是使用服务器的URL重写模块,在LAMP(Linux+Apache+MySQL+PHP)服务器上一般使用mod rewrite模块,Windows服务器也有功能相似的ISAPI Rewrite等模块。以LAMP服务器为例,要想把URL:
http://www.domain.com/products.php?id=123
静态化为:
http://www.domain.com/products/123
需要启用服务器mod rewrite模块,然后在.htaccess文件中写入如下代码:
RewriteRule/products/([0-9]+)/products.php?id=$1
URL重写代码基于正则表达式,每个网站的动态URL结构不同,服务器设置也可能不同,代码也就不同。正则表达式的写法比较复杂,千变万化,通常需要程序员编写。在写URL静态化代码时必须非常小心,错了一个字符,多了一个斜杠等微小的不同,都可能造成灾难性的后果。我本人就遇到过这样的案例。
严格来说,这里所说的URL静态化应该称为“伪静态化”,也就是说服务器上还是不存在相应的HTML文件,用户访问时还是动态生成页面,只不过通过URL重写技术使网址看起来像是静态的。也有的CMS系统可以实现真正静态化,站长增添产品或文章后,系统会自动生成真实存在的静态的HTML文件。对搜索引擎来说,真正的静态与伪静态没有区别。
4.8.3 URL不需要静态化吗
近两三年搜索引擎对动态URL的抓取有了很大进步。一般来说URL中有两三个参数,对收录不会造成多大影响。权重高的域名,再多几个问号也不是问题。不过一般来说还是建议将URL静态化,既能提高用户体验,又能降低收录难度。
2008年9月份,Google站长博客发表了一篇讨论动态网址和静态网址的帖子,颠覆了这个SEO界的传统观念。在这篇帖子里,Google明确建议不要将动态URL静态化。
Google的帖子有几个要点。
(1)Google完全有能力抓取动态网址,多少个问号都不是问题。
(2)动态网址更有助于Google蜘蛛读懂URL含义并进行鉴别,因为网址中的参数有提示性。Google举了这个例子:
www.example.com/article/bin/answer.foo?language=en&answer=3&sid=98971298178906&query=URL
URL里的参数本身有助于Google理解URL及网页内容,比如language后面跟的参数是提示语言,answer后面跟的是文章编号,sid后面的肯定是Session ID。其他常用的参数包括:color后面跟的一般是颜色,size后面跟的参数是尺寸等。有了这些参数名称的帮助,Google更容易理解网页。
将网址静态化后,这些参数的意义通常就变得不明显了,比如这个URL:
www.example.com/shoes/red/7/12/men/index.html
就可能使Google不知道哪个是产品序列号,哪个是尺寸。
(3)URL静态化很容易弄错,那就更得不偿失了。比如,通常动态网址的参数调换顺序所得到的页面是相同的,这两个网址很可能就是同一个页面:
● www.example.com/article/bin/answer.foo?language=en&answer=3
● www.example.com/article/bin/answer.foo?answer=3&language=en
保留动态网址,Google比较容易明白这两个URL是一个页面,因而自动合并权重。经过静态化后,这样两个网址Google就不容易判断是不是同一个页面,从而可能引起复制内容:
● www.example.com/shoes/men/7/red/index.html
● www.example.com/shoes/red/7/men/index.html
再一个容易搞错的是Session ID,也可能被静态化进URL:
www.example.com/article/bin/answer.foo/en/3/98971298178906/URL
这样网站将产生大量URL不同、但其实内容相同的页面。
所以,Google建议不要静态化URL。
但是我目前还是建议尽量要静态化URL。原因如下。
(1)Google给的建议是从Google自己出发,没有考虑其他搜索引擎。Google抓取任何动态网址没问题,并不意味着百度、雅虎、必应、搜狗、搜搜等都没问题。
(2)Google所说的静态化的弊端,基本上是基于静态化做得不正确的假设。问题是要做静态化就得做正确,假设会做错是没有什么道理的。有几个人会在静态化网址时把Session ID也放进去呢?
(3)用户体验。带有参数的URL可能有助于Google读懂内容,但是显然非常不利于用户在一瞥之下理解页面大致内容。看看这两个网址哪个更清晰,更容易读懂,更有可能被点击呢:
● www.example.com/product/bin/answer.foo?language=en&productID=3&sid=98971298178906&cat=6198&&query=URL
● www.example.com/product/men/shoes/index.html
显然是第二个。
除了点击率,长的动态网址也不利于记忆,不利于在邮件、社会化网站等地方抄送给别人。
4.9 URL设计
URL在搜索结果列表中是显示内容之一。设计网站结构时需要对目录及文件命名系统做事先规划。总的原则是首先从用户体验出发,URL应该清晰友好、方便记忆,然后才考虑URL对排名的影响。具体可以考虑以下几方面。
1.URL越短越好
这主要是为用户着想。对搜索引擎来说,只要URL不超过1000个字母,收录起来都没问题。不过真的使用几百个字母的URL,用户看起来就费事了。曾经有人做过搜索结果点击实验,一个比较短的URL出现在一个比较长的URL下面时,短URL的点击率比长URL高2.5倍。
另外,短URL也利于传播和复制。站长做链接时,通常会直接复制URL。短URL不会有问题,长URL复制时都会费劲,也可能复制得不完整,造成404错误。
2.避免太多参数
在可能的情况下尽量使用静态URL。如果技术上不能实现,必须使用动态URL,也要尽量减少参数。一般建议2~3个参数之内。参数太多用户看着眼花缭乱,也可能造成收录问题。
3.目录层次尽量少
这里指的是物理目录结构。
当然目录层次与网站整个分类结构相关。分类层数越多,目录层次也必然增多。在可能的情况下,尤其是静态化URL时,尽量使用比较少的目录层次。根据观察,百度尤其喜欢目录层次少的页面。
当然这不是说建议大家把页面全放在根目录下,那样的话,超过几百页的网站就不容易管理了,不仅搜索引擎无法从目录层次了解归属关系,站长自己恐怕也不容易分清哪个页面属于哪个分类。
4.文件及目录名具描述性
尤其对英文网站来说,目录及文件名应该具备一定的描述性,使用户在一瞥之下就能知道这个URL内容大致应该是什么。比如URL http://www.example.com/news/finance/
就比
http://www.example.com/cat-01/sub-a/
要好得多。
5.URL中包含关键词
关键词出现在URL中,也能提高页面相关性,在排名时贡献一点分数。关键词出现得越靠前越好,也就是说出现在域名中最好,其次是出现在目录名中,效果最小的是出现在文件名中。不过切不可为了出现关键词而堆积。
6.字母全部小写
这有以下几方面原因。
(1)全部小写容易人工输入,不会因大小写掺杂而犯错。
(2)有的服务器是区分大小写的,如Linux服务器,也就是说http://www.example.com/index.html
与
http://www.example.com/Index.html
是两个不同的网址。无论站长自己在做链接时还是用户输入时,因为大小写混用出现错误都会造成404错误。另外,robots文件代码也是区分大小写的,一个字母之差就可能使整个目录不能被收录。
本书举URL例子时有时用大写字母,只是为了强调,让读者看得更清楚。
7.连词符使用
目录或文件名中单词间一般建议使用短横线(-)分隔,不要使用下画线或其他更奇怪的字母。搜索引擎把URL中的短横线当做空格处理,下画线则被忽略。所以文件名seo-tools.html将被正确读取出seo与tools两个单词,而文件名seotools.html就不能被分解出两个单词。
8.目录形式还是文件形式
大部分CMS系统都可以把页面URL设置为目录或文件形式,比如http://www.example/products/red-shoes/
或
http://www.example/products/red-shoes.html
站长可以选择其中之一。这两种格式对排名没有大影响。有人认为目录形式的权重稍微高一点,不过也无法验证,就算权重高一点,也应该是微乎其微的。
目录形式的一个优点是,以后如果网站更换编程语言,URL可以不必变化,也不用经过特殊处理。文件形式的URL可能文件扩展名会变化,除非做URL重写。
4.10 网址规范化
网址规范化(URL canonicalization)指的是搜索引擎挑选最合适的URL作为真正(规范化的)网址的过程。
4.10.1 为什么出现不规范网址
举例来说,下面这几个URL一般指的是同一个文件:
● http://www.domainname.com/index.html
● http://domainname.com/index.html
但是从技术上来讲,这几个URL都是不同的网址,搜索引擎也确实把它们当做不同的网址。虽然在绝大部分情况下,这些网址所返回的是相同的文件,也就是网站首页,但是从技术上说,主机完全可以对这几个网址返回不同的内容。
除了上面因为带与不带www造成的,以及结尾是否带index.html文件名造成的不规范网址,网址规范化问题还可能由于如下原因出现:
● CMS系统原因,使同一篇文章(也可以是产品、帖子等)可以通过几种不同的URL访问。
● URL静态化设置错误,同一篇文章中有多个静态化URL。
● URL静态化后,静态和动态URL共存,都有链接,也都可以访问。目录后带与不带斜杠。
和
http://www.domainname.com/是不同网址,但其实是一个页面。
● 加密网址。
和
同时存在,都可以访问。
● URL中有端口号。
和
● 跟踪代码。有的联署计划或广告服务在URL后面加跟踪代码,如http://www.domainname.com/?affid=100
● 显示的都是首页内容。
4.10.2 网址规范化问题
网站出现多个不规范网址会给搜索引擎收录和排名带来很多麻烦。比如,网站首页应该是固定的,只有一个,但很多站长在链接回首页时所使用的URL并不是唯一的,一会儿连到http://www.domainname.com,一会儿连到http://www.domainname.com/index.html。
虽然不会给用户造成什么麻烦,因为这些网址其实是同一个文件,但是给搜索引擎造成了困惑,哪一个网址是真正的首页呢?哪一个网址应该被当做首页返回呢?
如果网站上不同版本的网址同时出现,那么两个或更多版本的URL都可能被搜索引擎收录,这就会造成复制内容。搜索引擎计算排名时必须找到所谓规范化的网址,也就是搜索引擎认为的最合适的URL版本。
网址规范化造成几个问题:
● CMS系统在不同地方链接到不同的URL,分散了页面权重,不利于排名。
● 外部链接也可能指向不同URL,分散权重。
● 搜索引擎判断的规范化网址不是站长想要的那个网址。
● 如果网址规范化问题太严重,也可能影响收录。一个权重不很高的域名,能收录的总页面数和蜘蛛总爬行时间是有限的。搜索引擎把资源花在收录不规范的网址上,留下给独特内容的资源就减少了。
● 复制内容过多,搜索引擎可能认为有作弊嫌疑。
4.10.3 解决网址规范化问题
要解决URL规范化问题有很多方法,比如:
● 确保使用的CMS系统只产生规范化网址,无论是否有静态化。
● 所有内部链接保持统一,都指向规范化网址。以带与不带www为例,确定一个版本为规范化网址,网站内链接统一使用这个版本。这样搜索引擎也就明白哪一个是站长希望的规范化网址。由于用户习惯,通常选择带www的版本为规范化网址。
● 在Google管理员工具中设置首选域。
● 使用301转向,把不规范化URL全部转向到规范化URL。下一节将深入讨论。
● 使用canonical标签。后面将深入讨论。
● 提交给搜索引擎的XML网站地图中全部使用规范化网址。但这些方法都各有局限:
● Google管理员工具不适用于其他搜索引擎。
● 有的网站因为技术原因做不了301转向。
● CMS系统经常不受自己控制。
● 内部链接自己可以控制,但外部链接不受控制。
所以,虽然有解决方法备选,但到目前为止网址规范化一直是困扰站长及搜索引擎的一个问题。据估计,网上有10%~30%的URL是内容相同但URL不一样的不规范化网址。为了万无一失,经常需要综合使用多个方法。
4.10.4 301转向
1.什么是301转向
301转向(或叫301重定向、301跳转)是用户或蜘蛛向网站服务器发出访问请求时,服务器返回的HTTP数据流中头信息(header)部分状态码的一种,表示本网址永久性转移到另一个地址。
其他常见的状态码还包括:
● 200表示一切正常
● 404网页不存在
● 302临时性转向
● 500内部程序错误
网址转向还有其他方法,如302转向、JavaScript转向、PHP/ASP/CGI程序转向、Meta Refresh等。除了301转向外,其他方法都是常用的作弊手法。虽然方法本身没有对错之分,但被作弊者用多了,搜索引擎对可疑的转向都很敏感。
2.301转向传递权重
网页A用301重定向转到网页B,搜索引擎可以肯定网页A永久性改变地址,或者说实际上不存在了,搜索引擎就会把网页B当做唯一有效目标。这是搜索引擎唯一推荐的不会产生怀疑的转向方法,更重要的是,网页A积累的页面权重将被传到网页B。
所以,假定http://www.domainname.com是选定的规范化网址,下面几个网址:
● http://www.domainname.com/index.html
● http://domainname.com/index.html
都做301转向到http://www.domainname.com,搜索引擎就知道http://www.domainname.com是规范化网址,而且会把上面列的网址权重传递集中到规范化网址。
目前Google会传递大部分权重,但不是百分之百权重。百度会传递所有权重。Google对301的识别、反应、完成权重传递,需要1~3个月时间。百度对301处理则比较保守,新旧URL会同时存在于数据库很长时间,经常看到做了301转向一年的URL还出现在百度结果中。
3.怎样做301转向
如果网站使用LAMP(Linux+Apache+MySQL+PHP)主机,可以使用.htaccess文件做301转向。.htaccess是一个普通文字文件,用Notepad等文字编辑软件创建和编辑,存在网站根目录下。.htaccess文件中的指令用于目录特定操作,如密码保护、转向、错误处理等。
比如把页面/old.htm 301转向到http://www.domain.com/new.htm,可以在.htaccess文件中放上这个指令:
redirect 301 /old.htm http://www.domain.com/new.htm
或
redirect permanent /old.htm http://www.domain.com/new.htm
把所有不带www(http://domain.com)版本的网址301转向到带www的版本(http://www.domain.com),包括:
转到
http://www.domain.com/about.htm
及
http://domain.com/dir/index.htm
转到
http://www.domain.com/dir/index.htm
等,还要用到mod rewrite模块,.htaccess文件指令是:
如果网站用的是Windows主机,可以在控制面板做301转向设定。
纯静态HTML页面无法做301转向。在HTML里能做JavaScript或Meta Refresh转向,但不能做301转向。HTML一被读取,就已经返回200 Ok状态码了。
如果页面是ASP或PHP,还可以做301转向。
ASP代码:
PHP代码:
4.301转向的其他用途
除了解决网址规范化问题,还有很多需要做301转向的情形。比如,为保护版权,公司拥有不同TLD的多个域名:
● company.com
● company.net
● company.org
● company.com.cn
● company.cn
为避免造成大量复制内容,应该选定一个为主域名,如company.com,其他域名做301转向到company.com。
或者公司注册了全称域名longcompanyname.com,但太长,也注册了缩写域名方便用户记住lcn.com,其中一个做主域名,另一个301转向到主域名。
网站改版也经常需要用到301转向,如页面删除、改变地址、URL命名系统改变等。
动态URL静态化也可能要做301,将旧的、动态的URL做301到新的、静态的URL。
4.10.5 Canonical标签
2009年2月,Google、雅虎、微软共同发布了一个新的标签canonical tag,用于解决网址规范化问题。
简单说,就是在HTML文件的头部加上这样一段代码:
意义就是这个网页的规范化网址应该是:
http://www.example.com/product.php?item=swedish-fish
下面这些URL都可以加上这段canonical标签:
● http://www.example.com/product.php?item=swedish-fish&category=gummy-candy
● http://www.example.com/product.php?item=swedish-fish&trackingid=1234&sessionid=5678
这些URL的规范化网址就都成为:
http://www.example.com/product.php?item=swedish-fish
Canonical标签相当于一个页面内的301转向,区别在于用户并不被转向,还是停留在原网址上,而搜索引擎会把它当做是301转向处理,把页面权重集中到标签中指明的规范化网址上。
另外有几个细节需要注意:
● 这个标签只是一种建议或暗示,而不是指令,它不像robots文件那样是个指令。所以搜索引擎会在很大程度上考虑这个标签,但并不是百分之百。搜索引擎还会考虑其他情况来判断规范化网址。这也防止站长有可能把网址弄错。
● 标签既可以使用绝对地址,也可以使用相对地址。通常使用绝对地址比较保险。
● 指定的规范化网址上的内容,与其他使用这个标签的非规范化网址内容可以有一些不同,不一定完全一样。比如电子商务网站上多按价格、时间、尺寸升降排序,生成的URL全都不一样,但内容大体相同,只有细小区别,就可以使用这个标签。
● 指定的规范化网址可以是不存在页面,返回404,也可以是还没有被收录的页面。但是不建议这么做,别没事找事。
● 这个标签可以用于不同域名之间。
有些网站由于技术限制不能做301转向,canonical标签就显得非常灵活,不需要任何特殊服务器组件或功能,直接写在页面HTML中就可以了。
目前Google、雅虎、必应都支持canonical标签,不过雅虎和必应收录页面后做出反应的时间非常长。百度还不支持canonical标签。
4.11 复制内容
复制内容也可以称为重复内容。复制内容指的是两个或多个URL内容相同,或非常相似。复制内容既可能发生在同一个网站内,也可能发生在不同网站上。
4.11.1 产生复制内容的原因
下面这些原因可能造成复制内容。
● 前面讨论的网址规范化问题会产生复制内容。
● 代理商和零售商从产品生产商那里转载产品信息。这倒没什么不对,一般生产商也都同意,没有版权问题。但是绝大部分代理商、零售商、批发商都是直接copy,而不做任何改动,大家用的都是一模一样的产品说明,所以这些电子商务网站上充斥着大量复制内容。
● 打印版本。很多网站除了正常供浏览的页面外,还提供更适于打印的页面版本,如果没有用适当方式禁止抓取,这些打印版本网页就会变成复制内容。
● 网站结构造成的各种页面版本。如产品列表按价格、评论、上架时间等排序页面,博客的分类存档、时间存档等。
● 网页内容由RSS生成。有很多网站,尤其是新闻类网站,用其他网站的RSS feed生成网站内容,这些内容在原始出处和很多其他类似网站上都已经出现过很多次了。
● 使用Session ID。搜索引擎蜘蛛在不同时间访问网页的时候,被给予了不同的Session ID,实际上网页内容是一样的。由于Session ID参数不同,就被当成了不同的网页。
● 网页实质内容太少。每个网页上都不可避免地有通用部分,比如导航条、版权声明、广告等。如果网页的正文部分太短,内容数量还抵不上通用部分,就有可能被认为是复制内容页面。
● 转载及抄袭。有时是其他人抄袭了你的网站内容,有时是善意的转载,有时是作者自己在不同网站发布文章,这些都会造成复制内容。
● 镜象网站。镜象网站曾经很流行,当一个网站太忙太慢的时候,用户可以通过替代镜象来看内容或下载,这也有造成复制内容的风险。
● 产品或服务类型之间的区别比较小。比如有的网站把自己的服务按地区进行分类,但实际上提供给每个地区的产品或服务都是一样的。这些按地区分类的页面只是把地名改了改,其他服务内容说明全都一样。
● URL任意加字符还是返回200状态码。有的网站由于技术原因,用户在URL后加上任意字符或参数,服务器还能正常返回200状态码,并返回没加上任意字符时一样的重复内容页面。
检查页面是否有复制版本相对简单。拿出页面正文中的一句话,加上双引号,在搜索引擎中搜索一下,从结果中就能看到是否有多个页面包含这句话。一般来说,随机挑选的一个句子,完整出现在另一篇无关文章中的可能性很低。
举一个比较极端却很清楚的例子。我为了试验搜索引擎是否使用关键词标签,曾经在一篇博客帖子中提到“伍疗踢瓜sdfghj”这么一个字符串。在我发这个帖子之前,搜索引擎没有这个字符串的任何结果。现在搜索一下,可以清楚看到有不少因为转载或抄袭形成的复制内容,如图4-9所示。
图4-9 转载、抄袭造成的复制内容
在Google搜索得到的结果就更多了,将近1000个页面。令人无奈的是,绝大部分转载没有按版权声明链接到原出处,更有很多直接连作者都给改了。
4.11.2 复制内容的害处
很多SEO对复制内容有个误解,认为网站上有复制内容,搜索引擎就会惩罚。其实搜索引擎并不会因为网站有少量复制内容而惩罚或降权。搜索引擎做的只是从多个页面中尽量挑选出真正的原创版本给予应有的排名,其他复制版本不在搜索结果中返回或排在比较靠后的位置。
不过既然交给搜索引擎去判断,就有可能判断失误,把本来是原创的页面当做转载或抄袭的复制内容,因而排名不好。这对原创页面来说确实就像是惩罚,不过不是因为复制内容本身,而是因为搜索引擎判断原创失败。
同站出现复制内容看似没有那么严重,不管搜索引擎判断哪个版本是原创,都是自己网站上的页面。问题是,搜索引擎认为的最合适的URL与站长自己认为的最合适的URL有可能不一样,站长优化和做链接时把精力放在页面A,搜索引擎却认为页面B最好(A与B内容一样),站长花在页面A上的精力就浪费了很多。
同一个网站内的复制内容会分散权重。既然页面在网站上出现,就必然有链接连向这些页面。如果一篇独特内容只出现在一个网址,网站上的链接就能集中到这一个网址,使其排名能力提高。链接分散到多个网址,会使得每一个网址排名能力都不突出。外部链接也同样,很可能分散到不同URL。
同站复制也造成收录过多没有意义的页面,在域名权重不高的情况下,可能挤占了其他独特内容的收录机会。
如果网站上存在大量复制内容,可能使搜索引擎对网站质量产生怀疑,导致惩罚。
4.11.3 消除复制内容
网址规范化问题造成的复制内容,前面已经讨论过。最好的解决办法是,确保一篇文章只对应一个URL,不要出现多个版本,网站所有内部链接统一连到这个URL。某些时候需要使用301转向。
不是由于网址规范化造成的同站内复制内容,解决的最好方法是选取一个版本允许收录,其他版本禁止搜索引擎抓取或收录。既可以使用robots文件禁止抓取,也可以使用noindex meta robots标签禁止索引。连向不希望收录的复制内容的链接使用NoFollow,JavaScript等阻止蜘蛛爬行。
另一个解决复制内容的方法是使用canonical标签。canonical标签既可以应用在网址规范化引起的复制内容上,也可以用在其他情况下。比如网站上同一个款式的鞋子可能分为不同型号,型号之间唯一的区别只是颜色。这些型号生成多个网址,产品说明也几乎完全一样,只是说明颜色的地方不一样。这时就可以使用canonical标签,用户不会被转向,还是看到不同页面,但搜索引擎会把权重集中到其中一个型号上,从而避免复制内容。
带有Session ID的页面也可以使用canonical标签,如页面http://www.example.com/page-a.html放上代码:
这样,后面无论生成什么Session ID:
上面的URL都会被搜索引擎把权重集中到http://www.example.com/page-a.html
不同网站之间复制内容解决起来就比较麻烦,因为其他网站上的内容是无法控制的。能够做的只有两点。一是在页面中加入版权声明,要求转载的网站保留版权声明及指向原出处的链接。有些聚合网站会抓取feed自动生成内容,所以在feed中也要加入版权声明和链接。一般来说,原创版本的外部链接会比转载多一些,就算在中文互联网这个对版权极不重视的环境下,也还会有一些站长转载时保留原出处链接。对搜索引擎来说,指向原出处的链接是判断原创的最重要信号。
另一点就是坚持原创,假以时日必定能够增加网站权重,使网站上内容被判断为原创的机会增加。
如果有其他网站大量抄袭,造成原创内容不能获得排名,也可以考虑联系对方,要求加上版权链接或删除抄袭内容,或者向对方主机、域名提供商投诉,向搜索引擎投诉等。
4.12 绝对路径和相对路径
绝对路径指的是包含域名的完整网址。相对路径指的是不包含域名的、被链接页面相对于当前页面的相对网址。
比如页面A的URL是:
http://www.domain.com/pageA.html
页面B的URL是:
http://www.domain.com/pageB.html
页面A链接到页面B时使用这种代码:
就是相对路径。
如果使用完整的URL:
也就是浏览器地址栏中所显示的完整URL,就是绝对路径。
网站应该使用绝对路径还是相对路径问题?对SEO有什么影响?没有绝对答案,两者各有优缺点。
4.12.1 绝对路径
绝对路径URL优点是:
● 如果有人抄袭、采集你的网站内容,抄袭者比较懒,连页面里面的链接一起原封不动抄过去,绝对路径链接还会指向你的网站,增加网站外链及权重。
● 网站有RSS输出时,内容会被一些Feed聚合网站抓取显示。同样,页面里指向原网站的链接会被保留。
● 有助于预防和解决网址规范化问题。假设站长希望被收录的URL是带www的版本,由于技术原因不能从http://domain.com做301转向到http://www.domain.com。所有页面中的链接使用绝对路径如:
http://www.domain.com/article.html
链接绝对路径硬编码入HTML文件,这样就算有蜘蛛或用户偶然访问不带www的版本,如http://domain.com/article.html,这个页面上的绝对路径链接还是会把蜘蛛和用户带回到www的URL版本,有助于搜索引擎蜘蛛识别到底哪个版本是规范化的。
● 就算网页移动位置,里面的链接还是指向正确URL。
绝对路径缺点是:
● 除非链接是动态插入的,不然不好在测试服务器上进行测试。因为里面的链接将直接指向真正域名的URL,而不是测试服务器上的URL。
● 除非链接是动态插入的,不然移动页面将比较困难。因为页面位置发生变化,其他页面连向本页面的链接却可能无法跟着变化,还指向原来的已经硬编码的绝对路径。
● 代码比较多。链接数量大时,多出来的字符可能使HTML文件变大不少。
4.12.2 相对路径
相对路径正好相反。优点是:
● 移动内容比较容易,不用更新其他页面上的链接。
● 在测试服务器上进行测试也比较容易。
● 节省代码。
缺点是:
● 页面移动位置,里面的链接可能也需要改动。
● 被抄袭和采集对网站没有任何益处。不过很多采集软件其实是可以自动鉴别绝对路径和相对路径的,所以使用绝对路径有助于自己的链接也被抄到采集网站上,只在某些情况下是有效的。
● 搜索引擎解析URL时可能出错,不能正确读取页面上的链接URL。
如果不能做301转向,因而产生了严重的网址规范化问题时,使用绝对路径有助于解决网址规范化问题。如果文章被大量转载、抄袭,使用绝对路径可以带来一些外部链接。除此之外,使用相对路径比较简单。在正常情况下,相对路径不会对网站有什么副作用,绝对路径也不会有什么特殊好处。搜索引擎错误解析相对路URL的可能性是非常低的。
在正确解析URL的前提下,绝对路径和相对路径本身对排名没有任何影响。
4.13 网站地图
网站无论大小,单独的网站地图页面都是必需的。通过网站地图,不仅用户可以对网站的所有内容一目了然,搜索引擎也可以跟踪链接爬行到网站所有主要部分。
4.13.1 HTML网站地图
网站地图有两种形式。第一种称为HTML版本的网站地图,英文是sitemap,s需小写,特指HTML版网站地图。HTML版本网站地图就是用户可以在网站上看到的、列出网站上所有主要页面链接的页面。
对一些主导航必须使用JS脚本或Flash的网站(虽然我想不到什么原因必须要这么做),网站地图是搜索引擎找到网站所有页面的重要补充途径。
对小网站来说,网站地图页面甚至可以列出整个网站的所有页面。
但对稍具规模的网站来说,一个网站地图页面不可能罗列所有页面链接,可以采取两种办法。一种方法是网站地图只列出网站最主要部分链接,如一级分类、二级分类。另一种方法是将网站地图分成多个文件,主网站地图列出通往次级网站地图的链接,次级网站地图再列出一部分页面链接。多个网站地图页面加在一起,可以列出所有或绝大部分重要页面。
实际上一个具有良好导航系统和链接结构的网站,并不一定需要完整的、列出所有页面的网站地图,因为网站地图与分类结构经常是大同小异的。
4.13.2 XML网站地图
网站地图的第二种形式是XML版本的网站地图。英文Sitemap中的S大写时通常特指XML版本的网站地图。
XML网站地图由Google于2005年首先提出,2006年微软、雅虎都宣布支持。2007年各主要搜索引擎都开始支持robots文件指定网站地图位置。百度现在也支持XML版本网站地图。
XML版本网站地图由XML标签组成,文件本身必须是utf8编码。网站地图文件实际上就是列出网站需要被收录的页面URL。最简单的网站地图可以是一个纯文本文件,文件只要列出页面URL,一行列一个URL,搜索引擎就能抓取并理解文件内容。
标准版本的XML网站地图文件如下列代码所示:
其中urlset标签是必需的,声明文件所使用的Sitemap协议版本。
url标签也是必需的,是它下面所有网址的母标签。
loc标签也是必需的,这一行列出的就是页面完整URL。
lastmod是可选标签,表示页面最后一次更新时间。
changefreg是可选标签,代表文件更新频率。标签值包括:
● always,一直变动,指的是每次访问页面内容都不同。
● hourly,每小时。
● daily,每天。
● weekly,每星期。
● monthly,每月。
● yearly,每年。
● never,从不改变。
网站地图中声明的更新频率对搜索引擎来说只是一个提示,供搜索引擎蜘蛛参考,但搜索引擎不一定真的认为页面更新频率就是站长自己声明的那样。
priority是可选标签,表示URL的相对重要程度。可选0.0到1.0之间的数值,1.0为最重要,0.0为最不重要。默认重要程度值为0.5。站长可以使用priority标签告诉搜索引擎这个URL的优先级,比如通常首页肯定是1.0,分类页面可能是0.8,其他更深层页面重要性依次下降。这里所标志的重要程度只是相对于这个网站内部的URL所说的,与其他网站的URL重要性无关。所以把页面重要性标为1.0,并不能让搜索引擎认为这个页面比其他网站的页面更重要,只是告诉搜索引擎这个页面在本网站内是最重要的。
XML网站地图文件最多可以列出5万个URL,文件不能超过10MB。如果网站需要收录的URL超过5万个,可以使用网站地图索引文件,也就是分成多个网站地图文件。一个网站最多可以有1000个XML网站地图文件,也就是可以列出5000万个网址。
制作好网站地图文件后,可以有两种方式通知搜索引擎网站地图的位置,一是在站长工具后台提交网站地图文件。目前Google、雅虎、必应都已经开通站长工具,所有站长都可以注册。2010年4月份,百度也推出站长工具,正在内测中,还未对所有站长开放。百度站长工具的主要功能之一也是提交网站地图。
另外一种方式是在robots.txt文件中通知搜索引擎网站地图文件位置,代码如下所示:
所有主流搜索引擎,包括百度、Google、雅虎、必应,都支持robots文件指定网站地图文件位置。
通过XML网站地图通知搜索引擎要收录的页面,只能让搜索引擎知道这些页面的存在,并不能保证一定被收录,搜索引擎还要看这些页面的权重是否达到收录的最低标准。所以XML网站地图只是辅助方法,不能代替良好的网站结构。
大中型网站提交网站地图通常有比较好的效果,能使收录增长不少。但也有的网站,尤其是小型网站,提交网站地图没有什么效果,有的站长甚至认为有反效果。
4.14 内部链接及权重分配
前面提到网站结构优化要解决的最重要的问题包括收录及页面权重分配。在理想情况下,经典树形结构应该是比较好的链接及权重分配模式。但是由于不同网站采取的技术不同,要实现的功能、网站目标、重点要解决的营销问题都很可能不同,某些看似是树形结构的网站,仔细研究起来其实是奇形怪状的。每个网站有自己的特殊问题需要解决,没有可以适用于所有网站的结构优化秘诀,必须具体问题具体分析。为了扩展读者的思路,本节列举一些可能会遇到的情况及解决方法。
4.14.1 重点内页
首先考虑一个最常见也最简单的情况。一般来说,网站首页获得的内外部链接最多,权重最高。首页链接到一级分类页面,这些一级分类页面权重仅次于首页。大部分网站有多层分类,权重依次下降,权重最低的是最终产品页面。
有时某些具体产品页面却需要比较高的权重,比如某些转化率最高、利润率最高或者新推出的重点产品,搜索次数很多的产品(有的产品名称搜索次数相当大,超过一些分类名称),还有为特定节日或促销活动制作的专题页面。这些页面按照经典树形结构安排,离首页通常有一定距离,权重不会太高。要想使这种重点内页获得高权重,最简单的方法就是在首页上直接加上几个重点内页的链接,甚至可以在侧栏推荐、促销部分加上全站链接。
在很多电子商务网站上,首页展示的是最新产品、热门产品等。这些产品的选择其实是有学问的,并不一定真的按发布时间列出最新产品,或真的是产生订单最多的产品。站长可以放上自己想重点推广的产品页面,使这些内页对应的产品名称排名提高。
依我的经验,把产品内页链接放在首页上,哪怕没有其他外部链接的支持,这些内页的排名也会有显著提高。
4.14.2 非必要页面
每个网站都有一些在功能及用户体验方面很必要、但在SEO角度没必要的页面,比如隐私权政策、用户登录页面、用户注册页面、联系我们、甚至还包括“关于我们”页面。从用户角度看,这些页面是必需的功能或有助于提高网站信任度。不过搜索引擎既不能填表注册,也不能登录,一般网站也不会想优化“隐私权政策”这种关键词,这些页面既没有必要也不太可能获得任何排名。
麻烦的是这些页面通常在整个网站每个页面上都会有链接,它们的权重将仅次于首页,与一级分类页面相似,可能更高。不得不说这是一种权重浪费。为降低这些非必要页面的权重,一般可以采取几种方式。
(1)只在首页显示链接,其他页面干脆取消链接,如隐私权政策,关于我们等页面。
(2)使这些页面的链接不能被跟踪或传递权重,例如使用NoFollow标签或使用JavaScript链接。某些必须在所有页面显示的链接可以这样处理,如用户注册及登录页面。
还可以将这些页面的链接通过一个程序页面做转向,如链接做成redirect.php?page.html, redirect.php程序只实现一个功能,就是根据后面的参数自动转向到page.html,然后用robots文件禁止爬行redirect.php这个文件。
除了上面提到的几种明显的非必要页面,很多网站其实存在更多非必要页面。比如电子商务网站列出的帮助信息、购物付款流程、送货信息、公司新闻等,这些页面从SEO角度看都没有什么价值。
SEO人员应该对网站所有版块了如指掌。凡是在产品分类及具体产品页面之外的信息,都要问问自己,这些页面站在SEO角度看是必需的吗?能优化什么关键词?尽量减少能够传递权重的全站链接到非必要页面。
4.14.3 大二级分类
典型树形结构首页链接到一级分类,一级分类页面再列出二级分类,这样,只要二级分类数目相差不太悬殊,权重值在二级分类页面上是大致平均分配的。不过有的时候某些二级分类下的产品数远远多于其他小一些的二级分类,甚至产品太多的二级分类下还可能再列三级分类。平均分配权重的结果就是,小分类充分收录,产品数量大的大分类有很多产品页面因为权重稀释无法收录。
要解决这个问题,思路就是提高大二级分类页面的权重,使它能带动的产品页面增多。现在很多网站导航系统采用CSS下拉菜单方式,鼠标放在一级分类链接上时,菜单向右或向下拉出一部分二级分类页面。当由于空间有限和用户体验因素不能显示所有二级分类时,选择显示哪些二级分类就是个学问。显然不能按拼音或字母顺序把排在前面的5个或10个放入主导航。一种方法是从用户体验出发,先选择热门二级分类。再一种方法是选择包含产品数量最多、需要权重支持才能充分收录的二级分类。这两者有时候是重合的,热门分类也是产品最多的分类,有时候不尽然。
这个原则同样适用于多层分类。如果网站有三层分类页面,应该计算出每个三级分类下有多少产品,想办法把这些大三级分类页面放在首页上,如果可能,放在尽量多的导航中。
4.14.4 翻页过多
稍大型的商务或信息类网站都可能会在产品列表,也就是最末一级的分类页面上,存在翻页过多的问题。通常产品列表会显示10个或20个产品,然后列出翻页链接,除了“上一页”和“下一页”,网站可能列出5个、10个翻页链接。用户点击页面10,第10页上又会列出10~19页的翻页,如图3-10所示。
可以简单计算一下,如果这个分类下有1000个产品,每个页面列出20个产品,就需要50个页面才能显示完所有产品。如果页面列10个翻页链接,那么第50个页面上的产品就需要从第一个产品列表页面点击4次才能到达,再加上分类页面本身与首页的距离,第50个页面上的产品距首页可能有七八次点击的距离了。
如果像图4-10那样列出5个翻页,当前页面居中,要到达第50页已经是二三十次点击之后了。
图4-10 常见的翻页系统
很多网站在某个分类下有成千上万的产品,可以想象,按传统翻页导航,列在后面的产品可能需要点击几十上百次才能到达。如果没有适当的结构优化,这些产品页面被收录的可能性几乎为零。
解决这个问题的最佳方式是再次分类。假设一个分类下有2000个产品,排在最后的页面按上面同样的情况,需要点击10次才能到达。如果把这个分类页面再次细分为20个子类,那么每一个产品页面就都在两次点击距离之内。
稍微计算一下就会知道,多一层分类给大中型网站带来的结构利益是巨大的。我们假设一级产品分类由于用户体验原因只能分10个,每个一级分类下面都能再列出30个二级分类,这样二级分类总数就能达到300。每个二级分类下最多有200个产品(每页20个产品,10页显示完所有产品),就能保证每个产品页面都在距首页4次点击之内,总共能带动的产品页面数为6万个。而如果加多一级分类,每个二级分类下再分30个三级分类,总三级分类数目将达到9000个。如果每个三级分类下有200个产品,所能带动的总产品数就达到了180万,而到达每个产品页面点击数只增加了一次,这比列出几十几百个翻页链接要好得多。
另外一个解决方式是对翻页链接进行格式变化,比如将翻页链接改为下面这种格式:
1,2,3,4,5,10,20,30,40,50
这样排在第50页的产品,只要再多一次点击也能达到。
如果产品数再多,甚至可以把翻页做成两排:
1,2,3,4,5,6,7,8,9,10
20,30,40,50,60,70,80,90,100
如上面所示两排翻页结构,2000个产品多一次点击就可以全部达到。页面可以列出多少翻页链接及链接之间的步长,SEO可以根据产品数量和网站权重调节。
4.14.5 单一入口还是多入口
一般来说,网站的首页和分类页面收录不会有什么问题,除非主导航系统有严重蜘蛛陷阱,或者网站已经被惩罚。大部分网站在结构方面面对的挑战,是使更多最终产品页面被收录。就算尽量把网站结构扁平化,当产品数量巨大时,实际上已经不太可能足够扁平。在这种情况下,要让最终产品页面被收录,有两个策略:一是多入口,二是单一入口,在选择上需要谨慎。
多入口指的是通向最终产品页面的链接路径有多条。比如典型电子商务网站的产品页面,一定会出现在相应的分类产品列表中,还可能出现在不同的排序页面上(按价格排序、按热门程度排序、按上架时间排序、按评论数排序等),以及不同的显示方式(按栅格显示、列表显示),也可能出现在相关的品牌或生产商产品列表中,也可能出现在搜索页面或标签聚合页面中,如图4-11所示。
图4-11 多种显示、排序方式
再比如博客系统,同一篇帖子除了在博客主列表中出现,还会出现在分类存档、按时间存档、标签页面,有的还会出现在作者分类页面。其他CMS系统也大多具备这种多入口结构通向最终产品页面。
这种结构的优势是为最终页面提供了多条爬行收录渠道,东方不亮西方亮。由于某种原因没从分类页面爬行,还可能从其他页面爬行抓取。提供的入口越多,被收录的机会越大。
缺点是这些入口页面本身也占用网站收录页面名额,而且往往造成很多相似内容。一个给定的网站,权重是大致固定的,所能收录的总页面数也是有上限的。收录的分类页面、各种排序页面、品牌生产商页面、搜索标签页面越多,给最终产品剩下的收录名额就越少。要提高整个网站的权重,唯一的办法就是增加外部链接。如果网站权重足够高,能带动的收录页面数远远大于实际页面数,提供多入口就是最佳方式,因为那些冗余的入口页面并不会挤占产品页面的名额。
但是如果网站权重比较低,产品数又很大,就可能需要使用单一入口方法,也就是从首页到产品页面只提供单一通路,通常也就是主导航的分类页面,其他各种排序页面、品牌、生产商页面,全部使用JavaScript脚本或NoFollow标签,甚至robots文件,阻挡搜索引擎收录。对某些网站来说,多入口页面本身数量就很巨大,会占用很多收录页面份额。只要网站分类系统、导航及翻页设计合理,提供单一入口也可以达到收录尽量多最终产品页面的目的。
哪种方法最适合还得看网站自身情况,如域名权重、实际总页面数等。
4.14.6 相关产品链接
无论单一入口还是多入口结构,对最终产品页面来说都可能有一个缺陷,那就是太过规则,有时候会造成某个部分的产品页面都不能被收录。单一入口结构更明显。比如如果某个分类页面因为导航设计不合理,离首页太远没有被收录,这个分类下的所有产品就都无法被收录。再比如博客系统中,发表比较早的帖子,无论从哪个入口渠道看,都会被推到网站更深层,离首页比较远,老帖子虽然一般没有收录问题(早就被收录了),但权重却随着时间推移而下降。
在产品页面生成相关产品链接,可以在一定程度上解决这个问题。这里所说的相关产品链接,不是写文章或发布产品信息时人工在正文中加进去的链接,而是系统通过某种机制自动生成的、连向其他产品页面的链接。
好的相关产品链接应该具有比较强的随机性,与正常的分类入口区别越大越好。常见的相关产品链接生成方法包括:
(1)购买这个产品的用户还购买了哪些其他产品。这种链接通常不会是同时上架、产品序号相连的页面,用户购买过的产品之间不一定有什么联系,往往横跨不同分类、品牌。
(2)同一个品牌或生产商的其他产品。同一个生产商或品牌,常常有不同分类下的产品,最终产品页面列出同一个生产商提供的不同分类的产品链接,也为更多产品提供了较为随机的入口。
(3)由标签生成的相似产品。标签由站长人工填写,或程序自动提取关键词,得到的标签与分类名称并不相同。通过标签聚合相似产品,也具有比较大的随机性。
(4)最简单的相关文章链接,就是在博客和新闻类网站中常看到的“上一篇”和“下一篇”这种链接。不过这样的相关链接对最终页面收录意义不大,因为时间上前后相连的文章本来就在时间存档及分类页面中相连,被同时收录和同时不收录的概率更大。与此类似,有的CMS系统在产品页面列出这个产品之前和之后的几个产品,意义也不大。
总之,相关产品链接要尽量随机,使本来不相连的页面能够交叉链接起来,为某些通过正常分类结构无法达到的区域提供入口。
4.14.7 锚文字分布及变化
前面提到过,合理的网站结构是在网站中分配锚文字的重要方法之一。最灵活常见的是在页面正文中或人工或自动加上其他页面的内部链接,链接锚文字可以有各种选择。这方面的应用学习目标非维基百科莫属。
相比之下,网站导航系统中锚文字的分布及变化很少有人注意。因为导航系统名称相对固定,分类该叫什么名称就叫什么名称,绝大部分网站在全站导航中不会给分类链接锚文字做任何变化。
其实仔细研究一下,即使在导航系统中锚文字也可以有变化。比如顶部导航使用“电脑”这个词,左侧导航改成“计算机”,或者左侧导航使用“快速减肥”作为分类链接锚文字,在面包屑导航中同样的分类改成“迅速减肥”。很少用户会注意到这种极细微的差别,就算注意到也无伤大雅,因为意义完全相同,对用户浏览网站没有任何影响。对分类页面来说,却可以增加不同的导入链接锚文字。
如果分类页面可以有更多具有相同意义的名称,还可以在导航系统中找到更多可以变化的地方。比如在网站不同部分(分类首页及其下所有产品页面),导航系统使用的锚文字也可以不同。如电脑外设部分页面连向移动硬盘分类就用“移动硬盘”做锚文字,在电脑软件部分所有页面指向同一个分类(移动硬盘)时,锚文字可以改成“便携式硬盘”,在电脑耗材所有页面上,导航系统锚文字又可以换成“USB硬盘”。
当然这里只是举例,具体网站是否需要在导航系统中变化锚文字,该选择哪些锚文字,应该先做关键词研究,再做决定。前提是,用做锚文字变化的词意义必须一样,不能影响用户体验,而且搜索次数差不多,都需要锚文字加强相关性。
4.14.8 首页链接NoFollow
很多页面上会有多个链接连向同一个URL,比如几乎网站的每一个页面上都有多个链接连向首页,顶部logo、顶部导航、左侧导航、页脚、版权声明等处,都可以有链接到首页。很多人的观察和实验表明,当页面上出现多个链接到同一个网址时,第一次出现的链接最重要,第一个链接的锚文字也最重要。
如果页面上出现的第一个首页链接是顶部logo,那么logo图片的ALT文字就相当于锚文字,需要放上首页的目标关键词。
也有的人认为图片ALT文字比真正的文字链接锚文字作用要小,因而不愿意把最重要的第一个链接放在图片上。在不影响用户体验的情况下,网站顶部logo也可以不放链接。这时页面上连向首页的第一个链接,往往就是顶部导航最左侧的首页链接。可惜的是,这里的链接锚文字一般来说就是“首页”两个字,而不能加上关键词。有人曾经尝试把顶部导航首页链接改用比较简短的关键词做锚文字,不过用户体验不好,用户不习惯,不能肯定这个链接就是通往首页的。
要解决这个问题一个比较简单的办法,就是页面上第一次(或最前几次)出现的以“首页”为锚文字的链接,加上NoFollow属性禁止搜索引擎跟踪,然后在页面上其他适合放一两个关键词的地方,如页脚,以关键词为锚文字链接向首页。这样,页面上第一个搜索引擎可以跟踪的链接就变成了页脚上的链接,而且锚文字中包含目标关键词。
另外一种方法,就是使用CSS控制页面表现,使页面上看起来第一个出现的以“首页”为锚文字的首页链接,实际上在代码中并不是第一个出现。代码中第一次出现的是以关键词为锚文字的首页链接,但表现上是出现在页面底部。
4.14.9 深层链接
给网站深层页面,尤其是具体产品页面建设一些外部链接,不仅有助于使外部链接构成趋向自然,也有助于页面收录。不仅对被链接的产品页面收录有帮助,还对与之在链接关系上相邻的区域内的页面收录都有好处。
外部链接进入网站最多的是首页,搜索引擎蜘蛛跟随外部链接进入网站后,爬行和抓取的路线就像扔一颗石子到水中形成的波纹一样,从中心进入点向外扩散。从首页进入的蜘蛛扩散后,就爬向分类页面、子分类页面,然后是具体产品页面。
跟随外部链接从某一个产品页面进入的蜘蛛,同样有这样的扩散爬行路线。蜘蛛进入后,会向与之相连的前后页面、上级分类页面、相关产品页面等扩散。因此,给一些距离首页较远、不太容易被蜘蛛爬到的页面适当建设几个外部链接,可以有效地解决一个区块的所有页面收录问题。
4.14.10 分类隔离
仔细检查本章前面讨论的典型树形链接结构,不知读者是否能看出一些问题。这种典型树形结构对大部分网站来说是最优化的,但有的时候由于域名权重比较低,就算网站比较扁平,最终产品页面还是权重过低,无法达到搜索引擎蜘蛛爬行收录的最低标准。这时可以考虑彻底改变树形结构。
仔细观察标准树形结构可以看到一个潜在弱点:分类页面得到太多链接和权重。不仅首页直接链接到分类页面,分类页面之间互相链接,网站上所有最终页面也通过主导航系统链接到所有一级分类,以及一部分二级分类页面。也就是说,在权重分配上,级别高的分类页面和首页几乎差不多,得到了网站所有页面的链及传递的权重。
对大部分网站来说,分类页面收录不成问题。分类页面积累的权重过高,反而使得最终产品页面获得的权重比较低。站长可以考虑把树形结构改为将不同分类进行分隔的链接结构。
在这种结构下,一级分类只链接到自己下级分类,不链接到其他一级分类。二级分类页面只链接回自己的上级分类,而不再链接到其他一级分类(包括其他一级分类下的二级分类)。同样,最终产品页面只链接回自己的上级分类页面,不再链接到其他分类页面。这样,分类之间形成隔离,首页权重将会最大限度地“灌入”到最终产品页面,而不是浪费在分类页面上。
这里所说的不链接到其他分类页面,既可以是真的取消链接,也可以通过禁止蜘蛛爬行的JavaScript,Flash等方式实现。
一些网站的实验证明,恰当使用这种方式可以使原本没有被收录的整个分类整体权重提升,达到被收录的最低标准。
要注意的是,这种方法只考虑收录,而没有考虑分类页面的排名问题。分类页面获得权重降低,也意味着排名力降低。
另外,更为重要的是,这种结构非常复杂,程序人员在处理哪些页面可以链接向哪些页面时必须非常小心,一不留神就可能使整个网站链接关系混乱。
这是比较难以掌握的方法之一,不到万不得已一般不要尝试。
4.15 CMS系统
现在的网站绝大多数是通过CMS系统制作和管理的,SEO人员优化网站就会受限于CMS系统本身的灵活性和功能。市面上有很多开源免费的CMS系统,如中文的dede(织梦)、帝国,英文的Joomla、Drupal等。大部分CMS系统已经注意到搜索引擎友好问题。有的系统自身已经做了SEO方面的调整,有的需要安装插件。所以大部分现成的CMS系统具备一定的SEO基础。
不过,完美实现SEO效果的CMS系统,我还没有见到,经常需要修改代码才能完成一些功能。当然,自己开发CMS是最灵活的。下面讨论从SEO角度出发CMS系统应该具备哪些基本功能,SEOer在选择或开发CMS时可以参考。
1.页面标题客制化
首先,CMS系统应该自动生成比较优化的页面标题,如分类页面采用:
分类名称-网站名称
产品页面使用:
产品名称-分类名称-网站名称
或
产品名称-网站名称
CMS系统还应该提供所有页面人工修改标题的客制化功能,在需要时站长可以根据关键词研究结果,重新撰写更恰当的标题。这是非常必要的功能。
2.URL静态化及客制化
URL静态化功能是必需的。通常CMS系统后台会有一个URL静态化选项,站长打开静态化功能,整个系统生成的页面就都使用静态化过的网址。静态化功能可能需要服务器支持某些模块,如mod rewrite。
好的CMS系统还应该提供URL客制化功能,站长可以自己定义所有的目录名及文件名。目录名通常在创建分类时就给出选项,站长可以使用自动生成的分类编号做目录名,也可以自己输入英文单词、汉语拼音等做目录名。创建产品或文章页面时,系统既可以自动按编号生成文件名,也允许站长输入最想要的文件名。
3.meta标签客制化
这里所说的meta标签指关键词标签(keyword tag)和说明标签(description tag)。系统应该允许站长完全删除这两个标签,因为对搜索引擎排名几乎没有作用,如果不能生成恰当的标签,还不如不写。如果站长选择使用说明标签和关键词标签,应该可以选择生成格式或完全人工撰写。
4.正文撰写
现在的CMS系统创建产品或文章页面时都提供“所见即所得”编辑功能,用户可以在正文中加黑体、加图片、填写图片ALT文字、添加链接、选择链接锚文字等。
5.分类页面说明文字
除了首页应该给站长充分的灵活性、人工撰写说明文字外,分类页面也应该留出一个区域,让站长人工撰写最恰当的说明文字。这样才能避免分类页面上只有产品列表,没有独特相关的文字内容。
6.标签功能
站长发布产品或文章时可以输入标签,系统自动按标签聚合内容并生成标签页面。
7.消除复制内容
系统应该自动禁止抓取复制内容,如打印版本、各种不同排序(按价格、按时间、按热门程度等)页面。有的系统,如博客,天生有多种存档,除了主页面,还有按分类存档、按时间存档、按作者存档等。这些复制内容有利于用户浏览,却会给搜索引擎造成大量不友好的复制内容。CMS设计者应该考虑到禁止抓取这些复制版本的功能,不然系统使用者很难在使用过程中做出改进。
8.301转向
系统应该提供从任何一个页面做301转向到另外一个地址的功能,站长可以根据需要自由安排转向。没有这个功能,网站栏目的更改、删除就会很有局限性。
9.网站地图生成
好的CMS系统可以自动生成XML版本网站地图,站长只要向搜索引擎提交网站地图地址就可以了。
10.正确生成H标签
几乎所有CMS系统都会生成H1、H2标签,但正确生成H标签的并不多见。比如很多CMS系统在所有页面都把网站名称放在H1标签中,这实际上是不正确的。首页应该使用网站名称,或者允许客制化H1标签中的内容。分类页面应该把分类名称放入H1标签,而不是网站名称。产品页面,则应该把产品名称放入H1标签。
上面提到的只是搜索引擎友好的最基本要求。实际上还有很多细节,比如翻页的处理、相关文章的生成,很少有现成CMS系统能完美解决,往往需要自己开发软件系统,才能达到要求。
4.16 404页面
用户访问网站上不存在的页面时,服务器通常应该返回404错误。如果站长没有在服务器端设置客制化的404页面,用户浏览器显示的将会是一个默认错误页面,如图4-12所示。
图4-12 默认404错误页面
这样的错误页面用户体验肯定不会好。所有的主机都提供客制化404页面的功能,站长应该充分利用。
不能假设页面既然不存在,搜索引擎就不会来爬行这种网址。由于种种原因,网上任何地方都可能出现指向你的域名却写错目录或文件名的URL,搜索引擎蜘蛛会跟踪这种错误URL,访问不存在的页面。
4.16.1 404错误代码
首先要注意的是,当页面不存在时,一定要返回404代码。有的服务器设置有问题,或者站长有意在页面不存在时还返回200状态码,也就是表示页面数据正常,这样将使搜索引擎认为网站上有大量重复内容,多个URL正常返回页面,但内容全是一样的。
页面不存在时,也不要返回任何转向代码。有的站长觉得既然页面不存在,就将用户301转向到首页,这也是搜索引擎不友好的设置,会让搜索引擎认为网站上有大量与首页内容相同的页面。
也不要使用JavaScript转向或Meta Refresh转向,尤其是时间比较短的如10秒以下的Meta Refresh转向。这些转向都使搜索引擎误以为页面存在,却返回重复内容。
不存在页面一定要确保正确返回404状态码。可以用后面SEO工具部分介绍的服务器头信息检测工具,任意输入一个肯定不存在的URL,看服务器返回什么头信息,如图4-13所示。
图4-13 确认服务器返回404代码
4.16.2 404页面设计
客制化404页面设计上需要注意几点。
首先404页面要保持网站统一模板、设计风格、logo及名称,不要让用户弄不清自己到了哪个网站上。
404页面应该在最醒目的位置显示错误信息,明确提示用户,要访问的页面不存在。还可以加上几点可能性,如页面已删除、用户输入了错误的地址、链接中的地址错误、页面已转移到新的地址等。
错误信息下面还可以为用户提供几种点击选项,如网站地图,包括通往首页和重要分类页面的链接,建议用户可以访问的页面,还可以加上站内搜索框。
4.16.3 404错误与外链
在这里提一个与404有关的非常简单有效的外部链接技巧。
站长可以在Google网管工具看到Google爬行了哪些不存在的网址,如图4-14所示。
图4-14 Google网管工具列出的404错误
通常Google蜘蛛不会没有原因地爬行这些不存在的页面,一定是有链接连向这些地址,而且大部分情况下是其他网站链接过来,却由于种种原因连向了错误地址,如图4-15所示。站长可以用Google网管工具检查有哪些外部网站连向了哪些不存在的页面。
图4-15 指向不存在页面的外部链接
这些外部链接连向不存在页面是个浪费,站长完全可以充分利用,或者联系对方站长改正错误地址,或者将错误地址做301转向到正确页面,或者干脆在本来不存在的URL上建一个页面,接收这些外部链接的权重。