欢迎光临
我们一直在努力

用静态URL显示动态网页-ASP教程,ASP应用

建站超值云服务器,限时71元/月

动态生成的网页在构造真正大型的网站时是不可缺少的。但是,动态页面的名字(即它的url)往往缺乏明确的含义。例如,名为product.asp?id=4的页面总不如名为/applicances/dishwashers/model3809.htm的页面来得好记。本文介绍如何实现静态页面名字和动态页面的映射。  
概述  
静态页面名字除了具有含义更明确这一优点之外,它的另外一个优点在于搜索引擎能够索引这些页面。大多数搜索引擎,如alta vista和yahoo,不会检索url中带有问号的页面,因为它们担心进入永无止境的链接迷宫。把动态页面名字转换成静态页面名字之后,搜索引擎就会对这些页面进行索引和分类,从而为网站带来更多的访问量。  
要使用本文介绍的方法将动态名字转换成静态名字,你必须使用windows 2000和iis 5.0。iis 5.0的两个改进使得我们可以实现这种转换,它们是:使用server.transfer的“自定义错误信息”功能以及在asp页面中使用server.transfer的能力。虽然iis 4.0也支持自定义错误信息,但它使用的是response.redirect,没有用,所以本文方法要求使用iis 5.0。response.redirect之所以没有用,是因为搜索引擎不会追随重定向。  
使用本文所介绍的方法,网站开发者先用静态风格的url链接事实上并不存在的页面。然后设置iis服务器,告诉它要用指定的asp页面(404.asp)来处理网站上出现的所有404错误。在这个404.asp页面里,把原来的url转换成正式的动态url,利用server.transfer执行并向用户浏览器返回目标页面。  
假设有如下url:  
http://www.myserver.com/applicances/dishwashers/kenmore/model3809.htm
其中myserver.com以网站的域名取代,该url将返回404错误。我们首先要做的是用某个专用的.asp页面来处理所有这些404错误。这可以用iis 5.0的“自定义错误信息”功能来实现。设置该功能的过程如下:  
●在mmc中打开iis服务器管理器  
●右击web网站节点,然后选择“属性”  
●点击“自定义错误信息”页  
●向下滚动,直至找到404错误  
●双击404错误,打开“错误映射属性”对话框  
●将消息类型改为url  
●在url框输入“/404.asp”  
●点击“确定”关闭窗口  
现在404错误已经由404.asp处理了。当iis调用404.asp页面时,它会提供导致这个404错误的url,这对我们来说是非常有用的。  
错误处理页面  
接下来我们创建处理错误的404.asp页面。首先要做的是获得导致这个404错误的页面名字。下面这行代码从查询字符串提取这个页面的名字:  
< %
获得页面名字
strq = request.servervariables(“query_string”)
% >
那么,strq中的哪些内容才是重要的呢?在上例中它应该如下所示:/applicances/dishwashers/kenmore/model3809.htm。我们真正需要的只有其中的model3809(产品型号),因为这是产品数据库中的唯一键。下面这几行代码根据产品型号找出产品的id(编号):  
< %
计算产品型号
nindex = instrrev(strq,”/”)
if (nindex >0) then
strmodelnumber = right(strq,len(strq)-nindex)
strq = left(strq,nindex-1)
end if

从产品型号去掉.htm后缀
if ((mid(strpagename,len(strpagename),1)=”m”) and _
(mid(strpagename,len(strpagename)-1,1)=”t”) and _
(mid(strpagename,len(strpagename)-2,1)=”h”) and _
(mid(strpagename,(strpagename)-3,1)=”.”)) then

strmodelnumber =left(strpagename,len(strmodelnumber)-4)

end if

从产品数据库查找产品编号
strsql = “select product_id from product ” _
& “where product_model = ” & strmodelnumber & “”
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是相当简单的。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用静态URL显示动态网页-ASP教程,ASP应用
分享到: 更多 (0)