用静态URL显示动态网页

动态|静态|网页|显示|静态

动态生成的网页在构造真正大型的网站时是不可缺少的。但是,动态页面的名字(即它的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是相当简单的。

时间: 2025-01-31 01:47:54

用静态URL显示动态网页的相关文章

用静态URL映射动态网页

动态生成的网页在构造真正大型的网站时是不可缺少的.但是,动态页面的名字(即它的URL)往往缺乏明确的含义.例如,名为product.ASP?Id=4的页面总不如名为/applicances/dishwashers/Model3809.htm的页面来得好记.本文介绍如何实现静态页面名字和动态页面的映射.  概述   静态页面名字除了具有含义更明确这一优点之外,它的另外一个优点在于搜索引擎能够索引这些页面.大多数搜索引擎,如Alta Vista和Yahoo,不会检索URL中带有问号的页面,因为它们担

ASP入门教程-静态网页和动态网页

静态网页与动态网页的区别在于Web服务器对它处理方式不同.了解这种区别对于ASP概念的理解至关重要. 1.静态网页 静态网页是标准的HTML文件,其文件扩展名是.htm或.html.它可以包含HTML标记.文本.Jave小程序.客户端脚本以及客户端ActiveX控件,但这种网页不包含任何服务器端脚本,该页中的每一行HTML代码都是在放置到Web服务器前由网页设计人员编写的,在放置到Web服务器后便不再发生任何更改,所以称之为静态网页. 静态网页的处理流程如下图: 步骤1:Web浏览器请求静态网页

Asp利用XMLHTTP将动态网页生成静态网页

xml|动态|静态|网页 新闻系统.blog系统等都可能用到将动态页面生成静态页面的技巧来提高页面的访问速度.下面是利用XMLHTTP将动态网页生成静态网页的一段简单代码.   url = "http://www.csdn.net/"  set http=Server.createobject("Msxml2.XMLHTTP")   Http.open "GET",url,false   Http.send()   set objStream =

动态网页制作技术JSP页面显示乱码问题的解决

js|动态|解决|网页|问题|显示|页面 动态网页制作技术 JSP教程 网页页面乱码 解决JSP页面显示乱码问题. 用JSP开发网站过程中可能会有三种情况会产生乱码. 一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接时出现乱码 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考. 一.JSP页面显示乱码 下面的显示页面(display.jsp)就出现乱码: <html> <head&

静态网页VS动态网页

         在做<牛腩新闻发布系统>的时候,建立的网页有.html的,还有.aspx,刚开始接触,还以为这些东西是一样的呢,当看ASP.NET视频的时候,听见里面讲课的老师有提到了这两样,原来是静态网页和动态网页之分.           静态网页          网页里面没有程序代码,不被服务器执行,静态网页每个静态网页都有一个固定的URL,通常以.htm..html等常见形式为后缀,网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就

如何在静态Html里面显示动态内容

摘要: 将自己的网页生成静态Html以后,虽然速度和SEO都有了很大的提升,但随之而来的问题也来了,有些内容需要在静态Html里面动态显示,比如点击的次数,每点击一次,点击数就添加1次, 将自己的网页生成静态Html以后,虽然速度和SEO都有了很大的提升,但随之而来的问题也来了,有些内容需要在静态Html里面动态显示,比如点击的次数,每点击一次,点击数就添加1次,显然这在纯静态页面里面没有办法实现,因为点击的次数是保存在数据库里面的,而纯静态Html跟数据库又没有什么关系. PHP跟ASP都是一

jsp实现将动态网页转换成静态页面的方法_JSP编程

本文实例讲述了jsp实现将动态网页转换成静态页面的方法.分享给大家供大家参考.具体如下: 如果我可以将jsp动态网页转换成静态页面,那么访问的时候就不需要频繁的访问数据库了. jsp 显示内容缓存技巧 前段时间做自己社区的论坛,在jive 的基础上做一个页面显示所有论坛的帖子,可以称之为总版,模仿forum 类的接口做个superforum 并且实现cachable,不过因为这个页面刷新量比较大,虽然被cache 了,我还是想办法进行页面的缓存,感觉用jsp 产生的html静态内容当缓存,页面访

驳动态网页、伪静态、静态网页之间的区别

很多SEOER朋友们都很苦恼,到底要不要把自己的动态站点转换成静态页面,考虑到服务器支持和URL重写等一些.htaccess代码编写麻烦,对站点静态化实在是可气又可恨. 1. 静态网址的好处我们可以很直观的看到,友好.速度快.但是不利的也多,不能实现很多搜索和其他功能.而且静态页面更容易占用空间资源. 2. 动态网页不占有资源,直接从数据库调取,能很好实习站点各种功能.不好的就是速度相对较慢,URL路径中含有?= & 等这样的符合.还有就是动态页面的缺陷是一个页面内容会有多个网址. 我们的动态网

动态网页、伪静态、静态网页之间的区别

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   动态网页是与静态网页相对应的,也就是说,网页 URL的后缀不是.htm..html..shtml..xml等静态网页的常见形式,而是以.asp..jsp..php..perl..cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号--"?",如有这样一个动态网页的地址为: http://www.ithov.com/ip/index.as