首页 > 代码库 > .net Url重写

.net Url重写

详细说明及下载dll源码路径:

http://msdn.microsoft.com/zh-cn/library/ms972974.aspx

 顺带上本人写的一个小例子:http://files.cnblogs.com/xuxu-dragon/Url%E9%87%8D%E5%86%99UrlRewrite.rar

一、

项目中引用ActionlessForm.dll和URLRewriter.dll。

二、

打开web.config,在configSecions中添加节点:

  <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter"/>

三、

添加规则

  
 <RewriterConfig>
  <Rules>
   <!-- Rules for Blog Content Displayer -->
   <RewriterRule>
    <LookFor>~/VmHotel/(\w+)\.aspx</LookFor>
    <SendTo>~/Hotel/$1.aspx</SendTo>
   </RewriterRule>
   <RewriterRule>
    <LookFor>~/TravelAgency/(\w+)\.aspx</LookFor>
    <SendTo>~/travel/TravelAgency/$1.aspx</SendTo>
   </RewriterRule>
   <!-- Rules for Product Lister -->
  </Rules>
 </RewriterConfig>

此处使用了正则“~/VmHotel/(\w+)\.aspx”,表示访问网站主目录VmHotel里面的所有aspx页面。"(\w+)"代表了匹配了一个或多个字母或数字或下划线或汉字。"$1.aspx"中的“$1”就是指的"(\w+)"。

四、在<httpModules>节点下添加如下节点

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

五、如果页面需要回传,则要添加如下改动。

在aspx网页的代码中加<%@ Register TagPrefix="RW" Namespace="ActionlessForm" Assembly="ActionlessForm" %>,然后将form标签改为RW:Form(注意开始和结束都要改),TagPrefix可以自定义。参考项目例子中的Hotel/Edit.aspx

 

ok完成

 查看最终效果:可以看到浏览器地址栏里显示的是http://localhost:2727/TravelAgency/Add.aspx?type=1,而在而Add.aspx文件在项目中的真实的结构却是travel/TravelAgency/Add.aspx。

 

网上也有现成的说明例子。

http://weijie.blog.51cto.com/340746/89603/

 

.net Url重写