Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  Asp.net  >  正文 在虚拟主机上Asp.net如何实现Urlrewrite

在虚拟主机上Asp.net如何实现Urlrewrite

发布时间:2014-08-15   编辑:www.jquerycn.cn
在虚拟主机上Asp.net如何实现Urlrewrite

很多朋友使用HttpHandle+Server.Transfer的方法实现asp.net中的urlrewrite,但此方法是错误的。
首先,HttpHandle是实现不了urlrewrite的;其次,Server.Transfer是标准的重定向,根本不是urlrewrite。

其实,实现urlrewrite不用自己HttpHandle,也不用自己实现HttpModule,用几行代码即可轻松实现。

本文介绍的是在虚拟主机上实现asp.net的urlrewrite。
虚拟主机不同于独立的服务器,因为没有权限去修改IIS,也没有权限去安装iis rewrite之类的IIS插件。

具体做法如下:打开global.asax.cs,定位到protected void Application_BeginRequest(Object sender, EventArgs e)。
代码:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
   string oldUrl = HttpContext.Current.Request.RawUrl ;
   string pattern = @"^(.+)default/(d+).aspx(?.*)*$";
   string replace = "$1default.aspx?id=$2";
   if(Regex.IsMatch(oldUrl, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled))
   {
        string newUrl = Regex.Replace(oldUrl, pattern, replace, RegexOptions.Compiled |
RegexOptions.IgnoreCase);
        this.Context.RewritePath(newUrl);
   }
}

访问类似:.../default/123.aspx 的网址,便会重定向到:.../default.aspx?id=123。

此外,利用功能强大的正则表达式,可以任意按照自己的需要来重写url,

由于是在虚拟主机上,因此只能重定向.aspx文件,如果是独立服务器,只要把后缀名在IIS中注册一下,便可以实现任意后缀名的处理。
比如可以注册一个*.myweb这样的类型,当别人访问default/123.myweb时,你可以把它重定向到default.aspx?id=123。

以上介绍了在虚拟主机上Asp.net如何实现Urlrewrite的一种办法,希望对大家有所帮助。

您可能感兴趣的文章:
在虚拟主机上Asp.net如何实现Urlrewrite
CentOS 5.5下FTP安装配置详解
404 not found是什么意思如何设置404
CentOS 5.3建立Vsftpd虚拟用户
CentOS6.2 x64 下 配置vsftpd虚拟用户服务器
虚拟主机上定时自动生成静态页面的方法
ipvsadm 命令参考
ubuntu Server 11.10 下vsftpd虚拟用户配置
vsftpd下创建虚拟用户的方法
学习apache的地址重写

[关闭]