详细参见: http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx
最简单的实现,就是在 Global.asax.cs 中 Application_BeginRequest 或者是 Application_AuthenticateRequest 事件处理中,对请求的URL进行判断并进行重写:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
HttpApplication app = (HttpApplication) sender;
string requestedPath = app.Request.Path;
string lookFor = @"^/webapptest/urlrewritetest/department/(\w+)\.aspx$";
string sendTo = "/webapptest/urlrewritetest/webform2.aspx?dept=$1";
Regex re = new Regex(lookFor, RegexOptions.IgnoreCase);
if (re.IsMatch(requestedPath))
{
string sendToUrl = re.Replace(requestedPath, sendTo);
app.Context.RewritePath(sendToUrl);
}
}
重写主要利用了 HttpContext.RewritePath 方法。
执行效果是将:
http://localhost/WebAppTest/URLRewriteTest/department/Finance.aspx
重写为:
http://localhost/WebAppTest/URLRewriteTest/WebForm2.aspx?Dept=Marketing