• 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>../../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

    效果出来了。

    轉自:http://www.cnblogs.com/HD/archive/2005/06/20/177633.html

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    struts2上传下载
    git教程
    mysql触发器2
    mysql触发器
    mysql set sql_mode 1055 报错
    一些乱七八糟的话
    linux 命令2
    linux命令 mysql
    东南亚之行(越南篇)
    flume常见配置
  • 原文地址:https://www.cnblogs.com/Athrun/p/823413.html
Copyright © 2020-2023  润新知