时间:2021-07-01 10:21:17 帮助过:20人阅读
- <br>protected void Application_BeginRequest(Object sender, EventArgs e) <br>{ <br>string oldUrl = HttpContext.Current.Request.RawUrl ; <br>string pattern = @"^(.+)default/(\d+)\.aspx(\?.*)*$"; <br>string replace = "$1default.aspx?id=$2"; <br>if(Regex.IsMatch(oldUrl, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled)) <br>{ <br>string newUrl = Regex.Replace(oldUrl, pattern, replace, RegexOptions.Compiled | <br>RegexOptions.IgnoreCase); <br>this.Context.RewritePath(newUrl); <br>} <br>} <br> <br>有了上边这段代码,我访问一个类似:.../default/123.aspx 的网址,当然这个网址在我的电脑上不存在,它就会被定向到:.../default.aspx?id=123。 <br>当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url, <br>这一切都是在服务器端默默的进行,在客户端是不会有任何察觉的。由于是在虚拟主机上,我们只能重定向.aspx文件,如果是自己的服务器,只要把后缀名在IIS中注册一下,就可以实现任意后缀名的处理。比如你可以注册一个*.myweb这样的类型,这样别人访问default/456.myweb时,你可以把它重定向到default.aspx?id=456。总之一句话,只要你能想到.net就可以帮你实现,并且这一切不需要多少的代码。