zoukankan      html  css  js  c++  java
  • ASP.net 静态化页面之的URL重写

    ASP.net 静态化页面之的URL重写

    有关于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>

              <sectionname="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>

       <addverb="*"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

    <?xmlversion="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

                  {

                  }

  • 相关阅读:
    java 实现大顶堆
    (转)单调栈总结
    leetcode再次总结
    (转)jvm具体gc算法介绍标记整理--标记清除算法
    (转)java 多线程 对象锁&类锁
    maven 上传 jar 到本地私服
    记录一下faster rcnn
    yolov2训练ICDAR2011数据集
    MSE,ks,mAP,weight decay等名词解释
    python爬虫爬取指定用户微博图片及内容,并进行微博分类及使用习惯分析,生成可视化图表
  • 原文地址:https://www.cnblogs.com/beyond1008/p/2034281.html
Copyright © 2011-2022 走看看