1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Text; 6 using System.Text.RegularExpressions; 7 8 /// <summary> 9 ///UrlRewriter 伪静态Url重写 10 /// </summary> 11 public class UrlRewriter:IHttpHandler 12 { 13 /// <summary> 14 /// 自定义 HttpHandler 15 /// </summary> 16 /// <param name="context"></param> 17 public void ProcessRequest(HttpContext context) 18 { 19 try 20 { 21 string url = context.Request.RawUrl;//获取用户请求的URL地址信息 22 Regex Reg = new Regex(@"/detail-(\d+)-(\d+)\..+", RegexOptions.IgnoreCase);//建立正则表达式 23 Match m = Reg.Match(url, url.LastIndexOf("/"));//用正则表达式进行URL字符串 24 if (m.Success)//匹配成功 25 { 26 string RealPath = @"~/admin/detail.aspx?type=" + m.Groups[1] + "&id=" + m.Groups[2];//重定向真实的地址信息 27 context.Server.Execute(RealPath); 28 } 29 else 30 { 31 context.Response.Redirect(context.Request.Url.ToString()); 32 } 33 34 } 35 catch (Exception ex) 36 { 37 context.Response.Redirect(context.Request.Url.ToString()); 38 } 39 } 40 41 /// <summary> 42 /// 如果 System.Web.IHttpHandler 实例可再次使用,则为 true;否则为 false。 43 /// </summary> 44 public bool IsReusable 45 { 46 get { return false; } 47 } 48 }
1 <?xml version="1.0"?> 2 <configuration> 3 <system.web> 4 <httpHandlers> 5 <!--使用自定义UrlRewriter类--> 6 <add verb="*" path="*/detail-?*-?*.html" type="UrlRewriter"/> 7 </httpHandlers> 8 <compilation debug="true" targetFramework="4.0"/> 9 </system.web> 10 </configuration>
1 <!--使用微软URLRewriter.dll 配置文件--> 2 <?xml version="1.0"?> 3 <configuration> 4 <!--使用URLRewriter.dll --> 5 <configSections> 6 <section name="RewriterConfig" requirePermission="false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> 7 </configSections> 8 9 <RewriterConfig> 10 <Rules> 11 <RewriterRule> 12 <LookFor>~/detail/([0-9]*)/([0-9]*).html</LookFor> 13 <SendTo>~/admin/detail.aspx?type=$1&id=$2</SendTo> 14 </RewriterRule> 15 </Rules> 16 </RewriterConfig> 17 18 <system.web> 19 <httpHandlers> 20 <!--使用URLRewriter.dll --> 21 <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" /> 22 <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" /> 23 24 </httpHandlers> 25 <compilation debug="true" targetFramework="4.0"/> 26 </system.web> 27 </configuration>
时间: 2024-11-16 09:28:06