,,asp.net Urlrewriter在虚拟主机上的使用方法
我在网上看到很多朋友在ASP.NET做urlrewrite,用的是HttpHandle服务器的方法。转移其实,这种方法是错误的。
第一,HttpHandle无法实现urlrewrite第二台服务器。Transfer是一个标准的重定向,根本不是urlrewrite。实际上,只需几行代码就可以轻松实现urlrewrite,而无需使用自己的HttpHandle或自己的HttpModule。我这里介绍的是,在虚拟主机上,虚拟主机和自己的服务器是不一样的。你无权修改iis,也无权安装IIS重写之类的IIS插件。但我们仍然可以轻松完成所需的功能。具体方法如下:打开global.asax.cs,定位到受保护的void application _ begin request(object sender,eventargs e)。我想我可以从方法的名字中猜出它是做什么的。输入如下代码:复制代码如下:protected void application _ begin request(object sender,eventargs e){ string old URL=httpcontext . current . request . raw URL;字符串模式=@'^(.)default/(\d )\。aspx(\?*)*$';string replace='$1default.aspx?id=$ 2 ';if(Regex。IsMatch(oldUrl,pattern,RegexOptions。IgnoreCase | RegexOptions。已编译)){ string newUrl=Regex。Replace(oldUrl,pattern,Replace,RegexOptions。已编译| RegexOptions。ignore case);这个。context . rewrite path(new URL);}}使用上面的代码,我访问了一个类似如下的URL:/default/123.aspx .当然,如果我的电脑上没有这个网址,它将被定向到:/default.aspx?id=123 .当然,有了强大的正则表达式,你可以根据自己的需要随意改写网址。这一切都是在服务器端默默完成的,不会被客户端察觉。因为它在虚拟主机上,所以我们只能重定向。aspx文件。如果是我们自己的服务器,在IIS中注册就可以处理任何后缀。例如,您可以注册类似*的类型。myweb,这样当别人访问default/456.myweb时,你可以重定向到default.aspx?id=456 .总之,只要你能想到的。net,它可以帮你实现,而且不需要太多代码。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。