ASP.NET实现伪静态

本文介绍了一种在ASP.NET中实现URL重写的方法,通过自定义HttpHandler和使用URLRewriter.dll,将动态URL转换为易于理解且利于SEO的静态URL格式。详细展示了代码实现过程,包括正则表达式的应用及配置文件的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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&amp;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>

 

 

 

转载于:https://www.cnblogs.com/52xiaopeng/p/4530882.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值