ASP.net的RUL重写

转载 2006年06月07日 16:51:00

有关于URL的重写,本文也只是拿来主意。相继有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的ISAPI设置。

娜列下来,实现方法也都很简单。

 

方法一:MS组件

这里也不用详解了,相关请看:

http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx

用法很简单,只需要把组件URLRewriter.dll拷到应用程序的bin目录下,然后在web.config下加入如下代码:

<configuration></configuration>中加入:

     <configSections>

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

     </configSections>

    

     <RewriterConfig>

          <Rules>

              <RewriterRule>

                   <LookFor>~/(/d{4})/(/d{2})/Default/.aspx</LookFor>

                   <SendTo>~/Default.aspx?ID=$1</SendTo>

              </RewriterRule>

          </Rules>

     </RewriterConfig>

 

然后在<system.web></system.web>中加入:

 

<httpHandlers>

   <add verb="*" path="*.aspx"

        type="URLRewriter.RewriterFactoryHandler, URLRewriter" />

</httpHandlers>

 

最后在地址栏上键入:http://localhost/Test/2004/12/News.aspx

效果出来了。

上面的<LookFor>~/(/d{4})/(/d{2})/News/.aspx</LookFor>这句这正则表达式URL,即被重写的URL,而<SendTo>~/Default.aspx?ID=$1</SendTo>这一句为原始URL地址。其中的$1为第一个正则表达式值(上面例子为:2004),以此类推,第二个即为$2 

 

方法二:Application_BeginRequest()

在应用程序中新建一个XML文件,文件内容为:文件名ReWriter.config

<?xml version="1.0" encoding="utf-8" ?>

<ReWriterUrls>

     <rule>

          <old>(.*)/News/(/d{4})/Default/.aspx</old>

          <new>../../Default.aspx?id=$2&amp;type=$3</new>

     </rule>

</ReWriterUrls>

Global.asax文件中的Application_BeginRequest(Object sender, EventArgs e)加入代码:

              try

              {

                   string path=Server.MapPath("~/ReWriter.config");

                   XPathDocument myXPathDocument = new XPathDocument(path);

                   XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();

                   XPathNodeIterator myXPathNodeIterator =  myXPathNavigator.Select ("//rule");

                   System.Text.RegularExpressions.Regex oReg;

                   string ReWriteUrl;

                   while (myXPathNodeIterator.MoveNext())

                   {

                        //oReg=new Regex(oNode.SelectSingleNode("url/text()").Value);

                        XPathNavigator nav2 = myXPathNodeIterator.Current.Clone();

                       string oldString="",newString="";

                        XPathNodeIterator it2 = nav2.Select("old");

                        while(it2.MoveNext())

                       {

                            oldString = it2.Current.Value;

                            break

                       }

                       it2 = nav2.Select("new");

                        while(it2.MoveNext())

                       {

                            newString = it2.Current.Value;

                            break

                       }

                        if(oldString != "" &&  newString != "")

                       {

                            oReg = new System.Text.RegularExpressions.Regex(oldString);

                            if(oReg.IsMatch(Request.Url.ToString()))

                            {

                                 ReWriteUrl = oReg.Replace(Request.Url.ToString(),newString);

                                 HttpContext.Current.RewritePath(ReWriteUrl);

                                 break

                            }

                       }

                   }

              }

              catch

              {

              }

 

最后在地址栏上键入:http://localhost/Test/News/2004/Default.aspx

效果出来了。

ASP.net的RUL重写

ASP.net的RUL重写 有关于URL的重写,本文也只是拿来主意。相继有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码...
  • smdy
  • smdy
  • 2007年03月29日 03:20
  • 839

[ASP.net]ASP.net的RUL重写

有关于URL的重写,本文也只是拿来主意。相继有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码方式,以及IIS里的ISAP...
  • pwqzc
  • pwqzc
  • 2005年08月22日 13:55
  • 2546

[ASP.net]ASP.net的RUL重写

ASP.net的RUL重写 有关于URL的重写,本文也只是拿来主意。相继有MS的组件“URLRewriter”和在Global.asax里的“Application_BeginRequest()”编码...
  • Caesar525
  • Caesar525
  • 2011年01月10日 11:56
  • 605

asp.net 加密解密URL

网上很多人在问怎么实现Web系统URL传输(表单提交)参数加密。例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts...
  • fengyarongaa
  • fengyarongaa
  • 2011年04月23日 15:50
  • 2032

asp.net中的URL重写功能

1.3  URL重写功能URL重写功能就是接受带有有效命名约定的URL,把它们转化为查询字符串。需要有效命名约定的两个原因是:将信息组织到逻辑层次结构中,以及隐藏查询字符串参数。本节将说明URL重写功...
  • zhoufoxcn
  • zhoufoxcn
  • 2007年03月01日 18:11
  • 3931

asp.net mvc web url 伪静态页面重写技术

1。该操作在Application_BeginRequest 中完成;   String path = Request.FilePath.ToString();   ///获取当前请求的虚拟路径...
  • zhou349398998
  • zhou349398998
  • 2011年09月28日 15:24
  • 1749

ASP.NET服务器控件CheckBoxList修改

背景:asp.net自带的服务器控件CheckBoxList,在生成Html时,未显示name值,这样在表单提交后,Request.Form(它是根据name值来获取的)无法获取选中的值,故对此控件小...
  • luoyeyu1989
  • luoyeyu1989
  • 2012年09月05日 22:39
  • 2999

asp.net不用设置iis实现url重写 类似伪静态路由

程序要调整地部分只有两块. 一是web.config文件. 二是链接地址. 所需urlrewrite.dll 首先下载urlrewriter:http://download.microso...
  • shan1774965666
  • shan1774965666
  • 2015年04月04日 03:14
  • 729

解读 .NET 中的重写与重载

很多人对“重写”和“重载”这两个概念都很模糊,甚至把它们弄混淆。我们都知道,面向对象语言的四大特征是:抽象、封装、继承和多态。而重写和重载是多态的两种表现形式。多态,顾名思义,就是指多种形态。而重写和...
  • cdefg198
  • cdefg198
  • 2012年03月31日 11:34
  • 2444

asp.net mvc重写JsonResult返回消息

using System; using System.Web; using System.Web.Mvc; namespace Transaction.Site.Models { /// ...
  • u011511086
  • u011511086
  • 2017年10月13日 09:40
  • 307
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.net的RUL重写
举报原因:
原因补充:

(最多只允许输入30个字)