zoukankan      html  css  js  c++  java
  • ASP.net的RUL重写

    有关于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>http://www.cnblogs.com/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

    效果出来了。

  • 相关阅读:
    20155209 2016-2017-2 《Java程序设计》第十周学习总结
    2017-2018-1 20155203 《信息安全系统设计基础》第四周学习总结
    2017-2018-1 20155203《信息安全系统设计基础》第一周学习总结
    20155203 实验五《网络编程与安全》
    20155203 2016-2017-2《Java程序设计》课程总结
    20155203 实验四《 Android程序设计》实验报告
    2017-5-10 课堂实践20155203
    20155203 实验三《敏捷开发与XP实践》实验报告
    20155203 2016-2017-2 《Java程序设计》第10周学习总结
    20155203 2016-2017-4 《Java程序设计》第9周学习总结
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2047160.html
Copyright © 2011-2022 走看看