首页  ·  知识 ·  云计算
ASP.NET的URL地址重写(伪静态)示例配置
网友  http://www.nmju.net/article.asp?id=51  综合  编辑:德仔   图片来源:网络
大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个

大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构,当然不排除有的公司已经攻克的这个问题,但对于大众程序员来说,他依旧是个问题,而且生成的化对于中小型网站也不一定会比动态的号,因为管理比较麻烦。

结构以上事实,然后伪静态技术产生了,规范的说就是URL重写技术,他对于ASPX格式支持最好,当然也可以重写HTML格式的文件,但这需要IIS的设置,相对比来说,ASPX格式的更方便,本站就是采用了该URL重写技术,这个技术优点显而易见:方便搜索引擎收录,方便查看,等等。那么接下来我们来看看如何配置他吧

首先、我们要用到URL重写组件:URLRewriter.rar

其次、需要在WEB.CONFIG里面进行些设置:

1、在Web.Config的<system.web>和</system.web>添加以下节点:

 
  1. <httpModules> 
  2.       <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" /> 
  3.     </httpModules> 

2、在Web.Config的<configuration>和</configuration>添加以下节点:

 
  1. <configSections> 
  2.   <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> 
  3. </configSections> 
  4.  
  5. <RewriterConfig> 
  6.   <Rules> 
  7.     <RewriterRule> 
  8.       <LookFor>~/Read(.[0-9]*)\.aspx</LookFor> 
  9.       <SendTo>~/read.aspx?id=$1</SendTo> 
  10.     </RewriterRule> 
  11.     <RewriterRule> 
  12.       <LookFor>~/Read,(.[0-9]*),(.[0-9]*)\.aspx</LookFor> 
  13.       <SendTo> 
  14.         <![CDATA[~/read.aspx?id=$1&SmallSortID=$2]]> 
  15.       </SendTo> 
  16.     </RewriterRule> 
  17.   </Rules> 
  18. </RewriterConfig> 

设置完以上两个步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。大家应该注意到了我写了2组<RewriterRule/>,其中第一组的是给单参数的地址用的,而另一组是给多参数动态文件用的。

用此方法注意:
1.不能使用Windows身份验证用户权限. 应使用Form验证,在web.config配置为:<authentication mode="Forms" />
2.使用Request.ServerVariables["script_name"]获得的路径仍然是:ShowPlay.asp?vid=1
3.被重写的地址如果回发,重写将失效 显示的地址将是ShowPlay.asp?vid=1
4. 后缀名必须为.aspx.如果是其他自定义后缀名,如.net  请在iis将.net映射到aspnet_isapi.dll.这样.net请求才能
到达asp.net引擎.

另外的一些提示:
很多朋友应该看到过类似这样的地址:
http://nmju.net/read/2007/07/11/135645/
其实这个也同样的重写,只是这个的使用必须要跟着建立相应的目录,譬如上面的这个地址,你必须要建立READ、2007、07、11、135645这些目录,虽然里面不需要存在文件,但建立还是有必要的

 

 

(一)、扩展名不变的重写:
重写规则:

<add name="RewritePhoto" virtualUrl="^~/(\d+).aspx"
     rewriteUrlParameter
="ExcludeFromClientQueryString"

     destinationUrl
="~/Default.aspx?ID=$1"

     ignoreCase
="true" />

IIS配置:(此配置应该为默认配置,但有的虚拟主机提供商修改了此配置)
网站->属性->目录->配置(G)...->映射->应用程序扩展->扩展名 .aspx ->编辑->"确认文件是否存在"复选框不选
(二)、伪静态重写,扩展名为.html等
重写规则:
 

<add name="RewritePhoto" virtualUrl="^~/(\d+).html"
     rewriteUrlParameter
="ExcludeFromClientQueryString"

     destinationUrl
="~/Default.aspx?ID=$1"

     ignoreCase
="true" />

IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选
(三)、任意扩展名的重写 如:扩展名为.zxjay
重写规则:

<add name="Rewrite1" virtualUrl="^~/(\d+).zxjay"
     rewriteUrlParameter
="ExcludeFromClientQueryString"

     destinationUrl
="~/Default.aspx?ID=$1"

     ignoreCase
="true" />
  


IIS配置:同上
(四)、无后缀的重写
重写规则:

<add name="Rewrite1" virtualUrl="^~/(\d+)/Default.aspx"
     rewriteUrlParameter
="ExcludeFromClientQueryString"

     destinationUrl
="~/Default.aspx?ID=$1"

     ignoreCase
="true" />


IIS配置:网站->属性->目录->配置(G)...->映射->通配符应用程序映射->插入
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
确认文件是否存在:不选

重写规则:

<add name="Rewrite1" virtualUrl="^http\://(.*).xianfen.net/Default.aspx"
     rewriteUrlParameter
="ExcludeFromClientQueryString"

     destinationUrl
="~/Default.aspx?ID=$1"

     ignoreCase
="true" />

 
本文作者:网友 来源:网络http://www.nmju.net/article.asp?id=51
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读