用网上下载的UrlRewriteModule URL重写组件发现有时在打开页面的时候会出错(错误一时没有记下来·!!),但是再刷新页面的时候又好了,于是想自己写一个URL重写的,以得以前看视频的时候说是要URL重写的话可在Module中写,上网查了一下相关的资料,写了一个简单的Module来进行URL重写,记录如下,以备后用:
web.config的配置:
<httpModules>
<!-- 测试 -->
<add name="ModuleTest" type="ModouleTest"/>
<!-- 测试结束 -->
</httpModules>
ModouleTest.cs
/*
* 作者: 牛腩
* 创建时间: 2009-9-2 9:59:30
* Email: 164423073@qq.com
* 说明: URL重写Module
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text.RegularExpressions;
/// <summary>
///URL重写Module
/// </summary>
public class ModouleTest : IHttpModule
{
public ModouleTest()
{
}
#region IHttpModule 成员
void IHttpModule.Dispose()
{
throw new NotImplementedException();
}
void IHttpModule.Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Application_BeginRequest);
}
#endregion
private void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
HttpServerUtility server = application.Server;
string url = request.Url.ToString();
/*
* 只要输入的地址中有niunantest/的都会跳转并把/后头的字符传过去,如:
* http://localhost:3212/ModuleTest/niunantest/43242
* http://localhost:3212/ModuleTest/niunantest/abd3345
* http://localhost:3212/ModuleTest/niunantest/牛腩
*/
Regex reg = new Regex(@"niunantest/(\w+)");
if (reg.IsMatch(url))
{
Match m = reg.Match(url);
string value = m.Groups[1].Value;
//response.Write("匹配的值:" + value + "<br>");
server.Transfer("~/default.aspx?str=" + value); // 使用response.Redirect会让地址栏中的地址改变
}
}
}
个人理解,其实module就相当于jsp中的过滤器(如果有的话),每个页面在呈现之前必须得先经过module,那么我们就可以在module中判断当前的URL地址,如果符合某个格式的就可以跳转到对应的页面,在这里用到了server.Transfer跳转是为了不让地址栏中的地址改变。
分享到:
相关推荐
这是本人博客上《用自定义IHttpModule实现URL重写》一文的示例代码,如果有未尽之处或者不明白之处请到本人博客上查看,网址是:http://blog.csdn.net/zhoufoxcn/archive/2009/07/14/4346356.aspx
本实例主要关注在没有使用二级目录的情况下的URL重写。 在ASP.NET中,URL重写通常通过`HttpModule`实现,如`UrlRewriteModule`。VS2008版本的Visual Studio中,我们可以创建一个新的项目,然后添加自定义的...
在.NET框架中,URL重写是一项重要的技术,它允许开发者隐藏实际的URL结构,提供更加友好、可读性更强的网址给用户。这通常通过IIS(Internet Information Services)的URL重写模块或者自定义的HTTP模块来实现。在本...
VS2003不内置URL重写功能,但我们可以使用第三方库如`UrlRewrite.dll`或者自定义HttpModule来实现。 **实现步骤** 1. **安装UrlRewrite组件**:首先,你需要获取一个支持.NET Framework 1.1或2.0的URL重写组件,...
这些文件可以帮助我们了解如何在实际应用中部署和使用URL重写功能。 通过URL重写,我们可以隐藏应用程序的实际结构,使外部用户只看到我们希望展示的URL形式。这对于提高用户体验、增强网站的专业形象以及提升搜索...
URL重写是Web开发中的一个重要概念,特别是在使用ASP.NET框架时。它允许开发者改变网站的URL结构,使得URL更加用户友好、搜索引擎优化(SEO)以及更符合网站的逻辑架构。在C#中,URL重写通常通过HttpModule来实现,...
在ASP.NET开发中,URL重写和页面静态化是两种重要的技术,它们对提升网站性能、优化搜索引擎排名以及保持良好的用户体验具有显著作用。下面将详细解释这两种技术,并结合HttpModuleDemo示例进行深入探讨。 一、URL...
4. **URL重写**:在BeginRequest事件中,重写模块检查请求的URL,如果满足重写规则,就修改请求路径,使其指向新的资源。 5. **后续处理**:经过重写后的请求继续在模块链中传递,其他HttpModule可以进一步处理,如...
具体来说,可以通过在请求开始时重写路径(RewritePath),使用正确的编码解码URL,确保其正确性。 ### 实现步骤 1. **创建一个IHttpModule类**:首先,需要创建一个实现了IHttpModule接口的类,比如`HookModule`...
示例代码展示了如何通过创建一个实现了`IHttpModule`接口的类来实现URL重写: ```csharp public class ReWriteModule : IHttpModule { public void Init(HttpApplication context) { context.BeginRequest += ...
ASP.NET 2.0 中实现URL重写有很多方法,如:Global.asax中捕获用Application_BeginRequest请求,再用HttpContext类的Rewrite方法或Server.Transfer方法实现重写;自己实现IHttpModule实现重写;还有的利用服务器的...
1. **IIS URL重写模块**:IIS提供了一个内置的URL重写模块,可以配合C#代码使用。这个模块基于配置文件(web.config)中的规则来执行URL重写。开发者可以通过添加XML规则来定义URL重写逻辑。例如,将`/article.aspx?...
除了记录访问信息,IHttpModule还可以用于实现其他功能,如身份验证、URL重写、缓存控制、性能监控等。通过巧妙地利用IHttpModule,开发者可以对ASP.NET应用程序进行深度定制,以满足特定的业务需求。 总结: ...
一般来说,要显示一些...当时曾经做过一个J2EE的网站放在虚拟主机上要对Tomcat做配置才能启用数据库连接池,但是虚拟主机提供商不提供这种服务),其实在ASP.NET中可以通过自定义IHttpModule就可以实现URL地址重写。
在***环境下,使用URL重写是实现二级域名映射的一种常用技术手段。URL重写的目的在于将用户友好的域名(例如***)转换成服务器可识别的带参数的URL(例如***),从而达到隐藏实际处理逻辑、提升用户体验的目的。以下...
BeginRequest事件是最早触发的,这使得URL重写可以在其他内嵌模块运行前完成,确保不会影响到后续的身份验证和授权过程。例如,如果在AuthenticateRequest事件中执行URL重写,可能会导致身份验证模块无法正确识别...