摘要:
静态页面名字除了具有含义更明确这一优点之外,它的另外一个优点在于搜索引擎能够索引这些页面。大多数搜索引擎,如Alta Vista和Yahoo,不会检索URL中带有问号的页面,因为它们担心进入永无止境的链接迷宫。关键字:
正文:
mber & ""
Set oRS = oConn.Execute(strSQL)
If (Not oRS.EOF) Then
lProductId = oRS("Product_Id")
End If
% >
现在我们得到了产品编号,在转换到正确的ASP页面之前必须先保存它。我们无法通过Server.Transfer在查询字符串中传递产品编号(这是IIS的一个局限),因此必须通过Session对象来传递它。
< %
Session("Id") = lProductId
Server.Transfer("/product.asp")
% >
执行这个页面时,浏览器地址栏中的内容如下:
http://www.myserver.com/applicances/dishwashers/kenmore/Model3809.htm
由于使用了Server.Transfer,浏览器地址栏中的URL不会改变,同样浏览器也不需要与服务器再交互一次,这与Response.Redirect是不同的。
另外也请注意URL中的目录是根本不存在的,事实上在这里URL中除了服务器名字之外的其余内容根本不起什么作用。例如,下面的几个URL都将返回同一页面。
http://www.myserver.com/Model3809.htm
http://www.myserver.com/trucks/ford/Model3809.htm
那么为什么要加上这么多目录呢?这些目录将提高搜索引擎对网站的评价。一些搜索引擎认为URL中的单词是比页面标题和正文更重要的搜索关键词,所以目录名字是非常重要的。
调用不存在的页面
我们已经讨论了将并不存在的URL转换为有效动态URL的技术。然而,要让搜索引擎能够索引这些页面,我们还需要链接这些并不存在的URL。换句话说,只有当我们链接了Model3809.htm页面后搜索引擎才会发现它。
以前链接这种页面时我们只需按照如下方式给出产品编号:“product.asp?Id=4”。现在我们就来构造一个以产品编号为参数返回恰当URL的函数。
< %
Function CreateProductURL(lProductId)
strSQL = "SELECT Product_Model FROM Product " _ & "WHERE Product_Id =" & lProductId
Set oRS = oConn.Execute(strSQL)
If (Not oRS.EOF) Then
strModel = oRS("Product_Model")
End If
CreateProductURL = "/" & strModel & ".htm"
End Function
% >
现在如果我们要加入URL,只需按照如下方式进行:
< A HREF="< %=CreateProductURL(4)% >" >洗碗机< /A >
本例我们假定不知道产品型号名称,必须查询数据库才能得知。但在现实中可能并非如此,我们知道产品的型号名称,可以直接创建URL而无需再次访问数据库。
性能问题
本文所介绍的方法会明显地影响性能。首先,为了创建静态风格的URL它需要一次数据库调用。其次,为了从产生404的URL出发得到正确的URL,它还要增加一次额外的数据库调用。最后,两次Server.Transfer需要较大的开销。
不过,有些性能问题可以用XCache(www.postpointsoft.com)来解决。XCache能够把出现404错误的URL转换到正确的页面,并缓存该信息以供后来的请求使用。
实例
请访问http://www.kulshan.com,这是一个应用本文技术的例子。Kulshan.com的大多数分支页面,如餐馆、饭店的评论,都为了在搜索引擎中获得更高的评价而使用了这种技术。Kulshan.com也使用了XCache。
小结
利用IIS 5.0的自定义错误信息功能控制404错误可以为动态页面制作出静态页面风格的URL。只要无需创建这些静态URL所用到的目录和文件,那么应该说创建这种既利于市场宣传、也利于搜索引擎排位的URL是相当简单的。
[1][2]