asp.net的url重写

 
  1. 方法一:MS组件   
  2.   
  3. 这里也不用详解了,相关请看:   
  4.   
  5. http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx   
  6.   
  7. 用法很简单,只需要把组件URLRewriter.dll拷到应用程序的bin目录下,然后在web.config下加入如下代码:   
  8.   
  9. 在<CONFIGURATION></CONFIGURATION>中加入:   
  10.   
  11.      <CONFIGSECTIONS>   
  12.   
  13.           <SECTION name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />   
  14.   
  15.      </CONFIGSECTIONS>   
  16.   
  17.         
  18.      <REWRITERCONFIG>   
  19.   
  20.           <RULES>   
  21.   
  22.               <REWRITERRULE>   
  23.   
  24.                    <LOOKFOR>~/(d{4})/(d{2})/Default.aspx</LOOKFOR>   
  25.   
  26.                    <SENDTO>~/Default.aspx?ID=$1</SENDTO>   
  27.   
  28.               </REWRITERRULE>   
  29.   
  30.           </RULES>   
  31.   
  32.      </REWRITERCONFIG>   
  33.   
  34.     
  35.   
  36. 然后在<SYSTEM.WEB></SYSTEM.WEB>中加入:    
  37.   
  38. <HTTPHANDLERS>   
  39.   
  40.    <ADD type="URLRewriter.RewriterFactoryHandler, URLRewriter" path="*.aspx" verb="*" />   
  41.   
  42. </HTTPHANDLERS>   
  43.   
  44.     
  45.   
  46. 最后在地址栏上键入:http://localhost/Test/2004/12/News.aspx   
  47.   
  48. 效果出来了。   
  49.   
  50.   
  51. 上面的<LOOKFOR>~/(d{4})/(d{2})/News.aspx</LOOKFOR>这句这正则表达式URL,即被重写的URL,而<SENDTO>~/Default.aspx?ID=$1</SENDTO>这一句为原始URL地址。其中的$1为第一个正则表达式值(上面例子为:2004),以此类推,第二个即为$2    
  52.   
  53.     
  54.   
  55. 方法二:Application_BeginRequest()   
  56.   
  57. 在应用程序中新建一个XML文件,文件内容为:文件名ReWriter.config   
  58.   
  59. <?xml version="1.0" encoding="utf-8" ?>    
  60.   
  61. <REWRITERURLS>   
  62.   
  63.      <RULE>   
  64.   
  65.           <OLD>(.*)/News/(d{4})/Default.aspx</OLD>   
  66.   
  67.           <NEW>../../Default.aspx?id=$2&type=$3</NEW>   
  68.   
  69.      </RULE>   
  70.   
  71. </REWRITERURLS>   
  72.   
  73. 在Global.asax文件中的Application_BeginRequest(Object sender, EventArgs e)加入代码:   
  74.               try  
  75.               {   
  76.                    string path=Server.MapPath("~/ReWriter.config");   
  77.                    XPathDocument myXPathDocument = new XPathDocument(path);   
  78.                    XPathNavigator myXPathNavigator = myXPathDocument.CreateNavigator();   
  79.                    XPathNodeIterator myXPathNodeIterator =  myXPathNavigator.Select ("//rule");   
  80.                    System.Text.RegularExpressions.Regex oReg;   
  81.                    string ReWriteUrl;   
  82.                    while (myXPathNodeIterator.MoveNext())   
  83.                    {   
  84.                         //oReg=new Regex(oNode.SelectSingleNode("url/text()").Value);   
  85.                         XPathNavigator nav2 = myXPathNodeIterator.Current.Clone();   
  86.                        string oldString="",newString="";   
  87.                         XPathNodeIterator it2 = nav2.Select("old");   
  88.                         while(it2.MoveNext())   
  89.                        {   
  90.                             oldString = it2.Current.Value;   
  91.                             break;   
  92.                        }   
  93.                        it2 = nav2.Select("new");   
  94.                         while(it2.MoveNext())   
  95.                        {   
  96.                             newString = it2.Current.Value;   
  97.                             break;   
  98.                        }   
  99.                         if(oldString != "" &&  newString != "")   
  100.                        {   
  101.                             oReg = new System.Text.RegularExpressions.Regex(oldString);   
  102.                             if(oReg.IsMatch(Request.Url.ToString()))   
  103.                             {   
  104.                                  ReWriteUrl = oReg.Replace(Request.Url.ToString(),newString);   
  105.                                  HttpContext.Current.RewritePath(ReWriteUrl);   
  106.                                  break;   
  107.                             }   
  108.                        }   
  109.                    }   
  110.               }   
  111.               catch{ }   
  112. 最后在地址栏上键入:http://localhost/Test/News/2004/Default.aspx   
  113. 效果出来了。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值