|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的;静态|静态|网页|显现|静态静态天生的网页在机关真正年夜型的网站时是不成短少的。可是,静态页面的名字(即它的URL)常常缺少明白的寄义。比方,名为product.asp?Id=4的页面总不如名为/applicances/dishwashers/Model3809.htm的页面来得好记。本文先容怎样完成静态页面名字和静态页面的映照。
概述
静态页面名字除具有寄义更明白这一长处以外,它的别的一个长处在于搜刮引擎可以索引这些页面。年夜多半搜刮引擎,如AltaVista和Yahoo,不会检索URL中带有问号的页面,由于它们忧虑进进永无尽头的链接迷宫。把静态页面名字转换成静态页面名字以后,搜刮引擎就会对这些页面举行索引和分类,从而为网站带来更多的会见量。
要利用本文先容的办法将静态名字转换成静态名字,你必需利用Windows2000和IIS5.0。IIS5.0的两个改善使得我们能够完成这类转换,它们是:利用Server.Transfer的“自界说毛病信息”功效和在ASP页面中利用Server.Transfer的才能。固然IIS4.0也撑持自界说毛病信息,但它利用的是Response.Redirect,没有效,以是本文办法请求利用IIS5.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毛病。这能够用IIS5.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)
EndIf
从产物型号往失落.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)
EndIf
从产物数据库查找产物编号
strSQL="SELECTProduct_IdFROMProduct"_
&"WHEREProduct_Model="&strModelNumber&""
SetoRS=oConn.Execute(strSQL)
If(NotoRS.EOF)Then
lProductId=oRS("Product_Id")
EndIf
%>
如今我们失掉了产物编号,在转换到准确的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的函数。
<%
FunctionCreateProductURL(lProductId)
strSQL="SELECTProduct_ModelFROMProduct"_&"WHEREProduct_Id="&lProductId
SetoRS=oConn.Execute(strSQL)
If(NotoRS.EOF)Then
strModel=oRS("Product_Model")
EndIf
CreateProductURL="/"&strModel&".htm"
EndFunction
%>
如今假如我们要到场URL,只需依照以下体例举行:
<AHREF="<%=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。
小结
使用IIS5.0的自界说毛病信息功效把持404毛病能够为静态页面制造出静态页面作风的URL。只需无需创立这些静态URL所用到的目次和文件,那末应当说创立这类既利于市场宣扬、也利于搜刮引擎排位的URL是相称复杂的。</p>强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。 |
|