1.通过RewritePath实现重写
URL重写可以通过编程的方式来实现。ASP.NET中的Contex.RewritePath()方法可以让你从程序中实现重写请求的URL。一旦重写后,系统将使用新的路径来继续执行这个请求。
在Global.asax文件的Application_BeginRequest()方法中,你需要增加代码来阅读进来的路径,然后根据一个或多个URL重写规则来成需要进一步处理的路径。下面的例子执行以下URL重写规则:
输入的url:"/URLRewriting/OldUrl.aspx 真实访问的url:"/URLRewriting/NewUrl.aspx"
输入的url:"/URLRewriting/UserAccount/{UserId}.aspx 真实访问的url:"/URLRewriting/UserAccount.aspx?id={UserID}
使用Contex.RewritePath()实现URL重写:
在这个例子中,每次一个新的请求被处理的时候,它将首先查看这个Application_BeginRequest()。通过使用Request.Url属性来获得输入的URL路径,然后通过正则表达式来应用网站URL重写规则,匹配到期望的输入网址后,将它们重写成你希望转向的网址。
当重写规则比较简单且规模比较小的时候,使用Context.RewritePath() 方法以编程的方式重写URL效果比较不错,但是一些大型网站通常有非常多的URL重写规则。手工方式对所有这些重写规则进行编程可能是一件麻烦且容易出错的方法。
一个更好的解决方法是从web.config文件中使用一个HttpModule(http模块)来动态的处理URL重写规则。更令人高兴的是,你无需自己动手来编写HttpModule来处理这些任务,已经有几个非常不错的免费版供你使用。以下是其中几个:URLRewriting.Net ,URLRewriter.Net ,Rewrite.Net 。
2.使用URLRewriting.Net重写Url(使用HttpModule)
我使用URLRewriting.Net演示一个简单的例子。在开始使用URLRewriting.Net之前,首先从URLRewriting.Net网站下载它,并把它放到你的网站的/bin文件夹下。
然后增加如下配置到你的web.config文件中:
主要添加<configsections><httpmodules><urlrewritingnet>