首页 > 代码库 > .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重写