教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 在虚拟主机上Asp.net如何实现Urlrewrite

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

发布时间:2014-08-15   编辑:jiaochengji.com
在虚拟主机上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
php中在虚拟机环境下使用xdebug注意事项
SAS112 CLI模式下删除虚拟磁盘
Win8.1下VMware虚拟机无法安装虚拟网卡怎么办?
用Apache实现虚拟主机服务
如何配置EMC VNX/CLARiiON,以配合Citrix XenServer的部署?
Mac配置虚拟主机详细过程
联想 Storage S3200/2200存储中,如何校验虚拟磁盘?
php需要虚拟机吗
php有虚拟机吗

[关闭]
~ ~