利用URLRewriter重写url地址




由于需要我们经常会想将动态的页面做成伪静态的,或者在get传值的时候使其简洁明了(实现“可删节”的URL),这时我们需要用到URL重写,微软的MSDN上有详细的原理和使用介绍。我这里就将一种简单的使用方法和步骤写下来。

  具体实现步骤(其中的一种实现方法):

  一、下载相关的DLL(ActionlessForm.dll和UrlRewriter.dll

    http://download.csdn.net/detail/yingwanghbx/4510059

  二、在项目中引用那两个DLL文件

    右击项目,点击Add Reference,选择Browse,然后选择相应的DLL,点击OK即可。

  三、添加browser文件

  1、右击项目,点击Add-New Item,选择Browser File,取个有意义的名字。在生成的*.browser文件的browsers节点中添加如下代码:

复制代码
<!-- URLRewriter -->   < browser  refID ="Default" >   < controlAdapters >   < adapter  controlType ="System.Web.UI.HtmlControls.HtmlForm" adapterType ="URLRewriter.Form.FormRewriterControlAdapter" />   </ controlAdapters >   </ browser >
复制代码

  2、在配置文件web.config中system.web节点内添加httpModules

<!-- URLRewriter type:HttpModule的标识号和类库名称 name:取一个较为友好的名称 -->   < httpModules >   < add  type ="URLRewriter.RewriterModule, URLRewriter"  name ="RewriterModule" />   </ httpModules >

  3、然后就是在configuration节点下添加(必须是第一个子节点):

复制代码
<!-- URLRewriter -->   < configSections >   < section  name ="CustomConfiguration"  type ="URLRewriter.Config.UrlsSection, URLRewriter" /> </ configSections >   < CustomConfiguration >   < urls >   <!-- ([\w]+)表示,1到n个字母或数字或下划线或汉字组成 -->   < add  virtualUrl ="~/Default/([\w]+)*"  destinationUrl ="~/Default.aspx?username=$1" />   < add  virtualUrl ="~/Default/([\w]+)*/([\w]+)*"  destinationUrl ="~/Default.aspx?newsTypeId=$1&amp;newsWhere=$2" />   < add  virtualUrl ="~/page/user/login"  destinationUrl ="~/page/user/login.aspx" />   < add  virtualUrl ="~/page/user/registe"  destinationUrl ="~/page/user/registe.aspx" />   < add  virtualUrl ="~/page/index"  destinationUrl ="~/page/index.aspx" />   </ urls >   </ CustomConfiguration >
复制代码

  如上,在不需要传参的情况下,可以直接在virtualUrl里面写要转化地址,destinationUrl为真实地址。在需要传参的情况下,用正则表达式代替,多个参数,在destinationUrl中用&amp分隔,在virtualUrl中用自己规定的符号代替,我是用的‘/’分隔的。

  4、测试,在Default的Page_Load中添加如下代码

if  (! string.IsNullOrEmpty(Request.Params[ " newsTypeId " ])){  string  newsId = Request.Params[ " newsTypeId " ].ToString();  string  newsWhere = Request.Params[ " newsWhere " ].ToString(); Response.Write( " newsid: "  + newsId +   " <br/>newsWhere: "  + newsWhere);}

结果如下:

利用URLRewriter重写url地址_第1张图片

  5、加入窗体回传保持的组件:

  在你的这个页面中加入:
<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
再把你的<Form...>改为:
<skm:Form id="你的表单名" method="post" runat="server">
.....
</skm:Form>

  6、在IIS7.5里配置

  请看他人博客,我就不写了,主要是找到和网站相对的连接池,选择framework 4.0经典模式


http://www.cnblogs.com/zhongweiv/archive/2011/10/29/UrlRewriter_IIS.html

你可能感兴趣的:(.net,url,重写)