一、动态生成的网页:

  对于那些动态生成网页,我们这些实际的访问者可以通过肉眼看到。但对于大多数搜索引擎的蜘蛛程序却往往是不可见的,这也就是动态网页很难被搜索引擎的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。

五、不同程序开发的动态页的不同解决方案:

1、CGI/ Perl
  
  如果你在网站中使用的是CGI或者Perl,可用一个脚本拾取环境变量前的所有