动态网页的搜索引擎优化(出自http://www.21cnbj.com)
动态生成的网页:
对于那些动态生成网页,我们这些实际的访问者可以通过肉眼看到。但对于大多数搜索引擎的蜘蛛程序却往往是不可见的,这也就是动态网页很难被搜索引擎的SPIDER检索的原因。因而,要想让你的动态网页能够出现在搜索引擎的搜索结果中,只要保证你的网站内容对搜索引擎是可见的,即搜索引擎的Spider程序能够看到你网站的内容就可以了
所谓动态网页一般指的是采用ASP,PHP,Cold Fusion,CGI等程序动态生成的页面,该网页中的大部分内容来自与网站相连的数据库。在网络空间中并不存在这个页面,只有接到用户的访问要求后才生成并传输到用户的浏览器中。而且由于访问者能够实时得到他们想要的数据,动态网页往往容易给人留下深刻的印象。此外,动态网页还具有容易维护和更新的优点。例如,对于一个新产品或价格的调整。网站管理员只要对数据库做一下简单的改动就可以了,根本不需要去修改每个单独的静态页面。
我们可以看出,从用户角度来考虑,动态网页确实非常棒。但如果在搜索引擎的角度来看,结论却不同了。
动态网页的问题所在:
问题就出在这些动态网页在网络空间中并不是实际存在的,只有当用户在变量区中输入一个值以后它们才会生成。而我们大家也都知道,搜索引擎的Spider再聪明,它也只是一个搜索程序,它们无法象真正的人那样选择变量并输入数值。
亦可将查询编入主页上的一个链接中,使得该链接成为一个预先定义的网站目录的查询。用户可在一个搜索表格中键入查询条件来查询,通常动态脚本需要某些信息来返回页面内容,最常见的如Cookie数据,Session ID或一个环境变量。但对搜索引擎的Spider程序来说,它们压根不可能知道去使用你的搜索功能,或者该问什么问题。就是因为如此,Spider对网站的检索往往会在一个动态站点前不得不止步。
此外,在动态页的URL中包含了问号(?)和百分号(%)。还有一些符号诸如&,%,+和$等在一个动态页的URL中也经常能看到。这样的URL被称作“环境变量”(query string)。不过大多数SPIDER都无法解读符号“?”后的字符。例如,对于这样一个URL:http://www.americanbooks.com/cgi-bin/items.cgi?name=naturaldiet大多数SPIDER都只能读取符号“?”之前的字符。URL中的“?”对它们来说是一个“停止标记”,这样它们最终检索到的URL只能是:
http://www.americanbooks.com/cgi-bin/items.cgi 很显然,由于这个URL并不实际存在,所以它们一无所获。因此,如果你的整个网站或网站上有大部分网页都是采用动态来生成的,为了使SPIDER易于读取你网站上的内容,你需要对网站做一定的修改。
还有一些搜索引擎在对页面进行检索时往往也会拒绝对cgi-bin目录下的静态页面(即被保存成静态页面的动态页)URL进行检索。例如,对下面两个URL它们就不提供检索:
http://www.americanbooks.com/cgi-bin/items.html http://www.americanbooks.com/cgi/items.html搜索引擎为何不读取符号“?”后的内容:
搜索引擎的SPIDER不愿意读取放在cgi-bin目录下的网页,或是URL中包含了符号“?”的字符。其原因就在于,如果在CGI中提供了“无穷”数量的URL,那么SPIDER往往就会因为对这些“无穷”网页的检索而被牢牢套住,陷入死循环。这就是所谓的蜘蛛陷阱(spider traps)。数据库程序对SPIDER亦有可能创建一个与此类似的情形。因而为避开可能的陷阱,Spider对于那些带有符号“?”的URL中的“?”之后的字符一概不予读取。
倘若Spider被你的服务器套住,不只是对Spider本身不妙,Spider对你网站页面的重复访问请求也会导致你的服务器系统彻底瘫痪。
动态网页的优化方案:
以http://www.americanbooks.com/cgi-bin/items.cgi?name=naturaldiet 为例:从其URL中我们可以看出,它表明网站americanbooks.com中提供有天然减肥产品相关的内容。遗憾的是,由于Spider不支持动态生成页,从而导致了该动态页上的相关内容无法得到搜索引擎的索引。假设现在有一个竞争者,他也有一个与天然减肥产品类似内容的网页,但由于他的网页是静态页面,所以能够得到搜索引擎的索引。那么可想而知,那些搜索“天然减肥产品”的用户最后访问的会是谁的网站。而且,就算americanbooks.com上提供的具体内容比它的竞争者再好又能怎样呢?就因为它无法出现在搜索引擎的搜索结果中,所以只能把网上销售的好机会拱手让给他的竞争者了。
对这个问题的解决方案可以遵循一个思想:即更改动态网页的URL,使URL中不再包含符号“?”“=”和其它类似的符号,看起来象一个静态的URL。不同程序开发的动态页的不同解决方案:
• CGI/ Perl
如果你在网站中使用的是CGI或者Perl,可用一个脚本拾取环境变量前的所有字符,再将URL中剩余的字符赋值给一个变量。这样,你就可以在URL中使用该变量了。
路径信息(或脚本名称)是动态应用程序中的一个变量,该变量包含了完整的URL地址和环境变量信息。这样,脚本就从路径信息变量中获取环境变量前的字符,并将剩余字符代入一变量。
不过,对于那些内置了部分SSI(Server-Side Include:服务器端嵌入)内容的网页,主要的搜索引擎都能够提供索引支持。那些以.shtml为后缀名的网页也被解析成SSI文件,相当于通常的.html文件。但如果这些网页在其URL中使用的是cgi-bin路径,则仍有可能不被搜索引擎索引。
ASP
ASP(Active Server Pages: Web 服务器端动态网页开发技术)被用于基于微软的网络服务器中。使用ASP开发的网页,一般后缀名为.asp。ASP 由于其简单功能实用等方面受到广大朋友的喜欢,再加上微软的强大支持,可说是时下网页开发最为流行的语言之一。只要避免在URL中使用符号“?”,大多数搜索引擎都能够支持用ASP开发的动态网页。
那么对用了“?”的URL怎么办呢?针对这个问题,有家名叫“Exception Digital Enterprise Solutions”的公司推出了他们的解决方案 –xqasp。这是一个升级软件。它允许将URL中的符号“?”通过网络服务器转换为“/”。更多相关信息请访问:http://www.xde.net/products/product_xqasp.htm 还有一些价格相对低廉一些的解决方案,象ASPSpiderBait和 PortalPageFilter。
Cold Fusion
如果你使用的是Cold Fusion,那么你就需要在你的服务器端重新对其进行配置。用Cold Fusion进行开发的网页一般都以.cfm为文件扩展名。一般情况下,数据库使用符号“?”来取回网页。你可对Cold Fusion设置重新进行配置,使其能够将一个环境变量中的符号“?”用符号“/”代替,并将替换后的数值传给URL。这样一来,最后到达浏览器端的就是一个静态的URL页。即对于URLhttp://www.americanbooks.com/items.cfm?item_id=11667,最后返回浏览器的将是 http://www.americanbooks.com/items.cfm/11667,当搜索引擎对该转换后的文件进行检索时,它不会遭遇“?”,因而可继续对整个动态页的索引,从而使你的动态网页对搜索引擎仍然具有可读性。
Apache 服务器
Apache是最流行的HTTP服务器软件之一。它有一个叫做 mod_rewrite的重写模块,该模块能够使你将包含环境变量的URL转换为能够为搜索引擎支持的URL类型。不过Mod_rewrite不是Apache软件安装中的缺省模块,所以你应当与你的主机托管公司进行协商,看看在你的服务器上是否有此模块。
还是用上面的URL作为例子:使用mod_rewrite模块后,该URL http://www.americanbooks.com/items.htm?cat=natural_diet 就变成了如下格式: http://www.americanbooks.com/natural_diet/index.htm 欲了解更多该模块的相关信息,请访问
http://httpd.apache.org/docs/mod/mod_rewrite.html可通过付费收录程序直接提交动态网页:
直接将动态网站提交到AltaVista可增加你的网站为其收录的机会。如果将其经由AltaVista或Inktomi的付费收录程序进行提交,就一定能够保证网站的收录。
文件扩展名:
如今,你的文件名后缀是什么。对搜索引擎来说已经不再是问题了,即使你的网页不是以.html或.htm为扩展名的,只要在URL中不包含符号“?”,仍有可能得到索引。相形之下,搜索引擎Northern ight尤为灵活,它能够索引任何以.html, .htm, .shtml, .stm, .asp, .phtml, .cfm, .php3, .php, .jsp, .jhtml, .asc, .text和.txt为扩展名的文件。不过它对后缀是.cgi的文件仍然不提供支持。如果你的网站上存在它不支持的扩展名文件,它会在网站提交的过程中通知你。
结束语:
问问你自己,是不是确实需要使用动态网页?数据库通常用作页面生成工具,你可以用它创建静态页面,尤其对于网站上不常更动的那些区域,可以考虑使用数据库来生成静态的页面内容。为了保证搜索引擎的索引,你也可以考虑为你的动态内容创建镜象静态的网页。
大多数的搜索引擎还是不习惯对动态网页的索引,到现在也如此。这是由于对一个动态生成网页的检索可能会导致搜索引擎的Spider掉进死循环的“陷阱”中而无法脱身。不过现在情况正在逐渐得到改善。 最先支持动态网页的搜索引擎是Google,在两千年底它已经能够索引动态页面(包括URL中的“?”)。此外,HotBot及其它一些搜索引擎也开始支持动态页面。
虽然这些搜索引擎能够支持动态网页,但为了确保其Spider程序免遭死循环之灾,搜索引擎将不会对来自动态生成页面中的链接进行深入访问。所以我建议大家要稍微多花点时间在你的动态生成网页上,并确保它们中的每一个都能够被搜索引擎索引到。事实上,最后你会发现,你所花费的这些时间绝对是一个非常棒的投资-同时它还能够为你的网站来更多的访问量。