做网站的人都可以在网上看到,很多做网站的朋友在asp.net中做urlrewrite,用的是HttpHandle+Server.Transfer的方法(method)。其实这种方法(method)是错误的。第一,HttpHandle是实现不了urlrewrite的;第二Server.Transfer是标准的重定向,根本不是urlrewrite。
其实,实现urlrewrite不用自己HttpHandle,也不用自己实现HttpModule,用一点代码(code)就可以轻松实现。网站源码也称为源代码,源程序。是指未编译的文本代码或一个网站的全部源码文件,是一系列人类可读的计算机语言指令。
要注意,这里介绍的是在虚拟主机上,虚拟主机不同于自己的服务器,你是没有权限去修改IIS,也没有权限去安装(ān zhuāng)iis rewrite之类的IIS插件。但是我们仍然可以轻松完成需要的功能。
详细做法如下:打开global.asax.cs,定位到GOOGLE PRotected void Application_BeginRequest(Object sender, EventArgs e)。网站源码我们可以把它理解成源文代码,当前看到的这个网页来说,其实它是由一大堆的源代码组成,通过我们浏览器(如微软的IE浏览器,谷歌的Chrome浏览器等)或服务器翻译成我们所看到的样子。源码交易网就是买卖双方对网站源码或商业源码进行磋商谈判的一单生意,指源码买卖的通称。交易有风险,操作需谨慎!从方法(method)名我想也能猜到它是做什么的。输入如下代码(code):
GOOGLE 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);
}
}
有了上边这段代码(code),我访问一个类似:../default/123.aspx 的网址,当然这个网址在我的电脑上不存在,它就会被定向到:../default.aspx?id=123。
当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url,
这一切都是在服务器端默默的进行,在客户(kè hù)端是不会有任何察觉的。由于是在虚拟主机上,我们只能重定向.aspx文件,如果是自己的服务器,只要把后缀名在IIS中注册一下,就可以实现任意后缀名的处理(processing)。比如你可以注册一个*.myweb这样的类型,这样别人访问default/456.myweb时,你可以把它重定向到default.aspx?id=456。总之一句话,只要你能想到.net就可以帮你实现,这一切能实现不需要多少的代码(code)。