电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> C#>>在asp.net中aspx进行url rewrite(url重写)的方法步骤以及代码:

在asp.net中aspx进行url rewrite(url重写)的方法步骤以及代码

来源:cncfan.com整理编辑 | 2010-12-22 | (有5871人读过)

实现aspx页面url 重写有2个方法,一是用asp.net本身的HttpModule来重写。二是用第三方组件来实现重写。 

一、用asp.net的HttpModule来进行地址重写 
void Application_BeginRequest(object sender, EventArgs e) { 

        string fullOrigionalpath = Request.Url.ToString(); 
         
        if (fullOrigionalpath.Contains("/Products/test.html")) { 
            Context.RewritePath("/Products.aspx?class=test"); 
        } 
        else if (fullOrigionalpath.Contains("/Products/hello.aspx")) { 
            Context.RewritePath("/Products.aspx?Category=hello"); 
        } 
    }  

二、用第三方组件来实现重写,步骤如下: 

第一步:下载 Intelligencia.UrlRewriter.dll组件,这个网上太多了。   

第二步:添加Intelligencia.UrlRewriter.dll的引用。   

第三步:在web.config中设置三个地方   

      1、在<configSections></configSections>节中加上<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />;   

      2、在<httpModules></httpModules>节中加上<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>;   

      3、在<configuration></configuration>节中添加<rewriter>    <rewrite url="~/(.+).html$" to="~/ViewNews.aspx?ID=$1" /> </rewriter> (这段替换规则需要根据你的实际需要去修改,如果要重写成HTML的格式,需要在IIS中设置映射,这个网上方法非常多。其中替换规则可以设置多个。)elligencia.UrlRewriter.dll的引用。   

asp.net中常用的url重写规则: 
  
当使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,IIS的默认文档机制也就失去了该有的作用,以下代码就是用来重新实现默认文档的方法:   

<rewrite url="^(.*)/(\?.+)?$" to="$1/default.aspx$2" />   
注意:使用“processing="restart"”的时候将会导致重写引擎从头开始执行所有的重写规则,此时应当注重包含“/default.aspx”字符串的处理。   

如果你需要同时支持多个默认文档,那么以上代码需要修改为:   

<if url="^(.*)/(\?.+)?$"> <rewrite exists="$1/default.aspx" to="$1/default.aspx$2" /> <rewrite exists="$1/index.aspx" to="$1/index.aspx$2" /> <rewrite exists="$1/index.html" to="$1/index.html$2" /></if>   
编辑以上规则代码的时候,尤其要注意确认文件是否存在。   

此外,在使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,你会发现.gif、.css等文件无法正常访问,这是因为此时对这些文件类型的处理都被ASP.NET所拦截。修正方法如下:   

<rewrite  url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.css|\.js)(\?.+)?)$"  to="$1" processing="stop" />   
两个比较特殊的正则表达式字符是“^”和“$”(不是必须的),“^”代表URL的开头,“$”代表URL的结尾。使用这两个符号可以使您更加精确的控制重写动作,以确保程序所匹配的URL正是您想处理的。   

“~/”表示当前网站应用程序运行所在的虚拟根目录,当您把网站应用程序安装于虚拟目录(或者非根目录)的时候,这尤其有用,而无须重新编写任何代码来替换您的虚拟根路径。   

模式匹配在处理查询字串(QueryStrings)的时候尤其有用,这可以让您的URL去掉类似于“?id=3”的代码段,这非常有用,可以让你轻松的实现伪静态。   

下面列出两个我们认为非常有特色的重写规则:   

(1) 当目标URL不包含自定义查询字串的时候:   

<rewrite url="^~/mypage(\?.+)?$" to="~/default.aspx$1" />   
此时“$1”匹配的是(\?.+)?,也就是所有的查询字串。   

(2) 当目标URL包含自定义查询字串的时候:   

<rewrite url="^~/mypage(\?(.+))?$"  to="~/default.aspx?page=mypage&$2" />   
注意此时需要使用“&”来代替“&”,这是XML文档语法的需要。 
C#热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2020 电脑爱好者 版权所有 备案号:鲁ICP备09059398号