posts - 2,  comments - 8,  trackbacks - 1

    在网上看到,很多朋友在asp.net中做urlrewrite,用的是HttpHandle+Server.Transfer的方法。其实这种方法是错误的。第一,HttpHandle是实现不了urlrewrite的;第二Server.Transfer是标准的重定向,根本不是urlrewrite。

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

    我这里介绍的是在虚拟主机上,虚拟主机不同于自己的服务器,你是没有权限去修改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/456.myweb时,你可以把它重定向到default.aspx?id=456。总之一句话,只要你能想到,.net就可以帮你实现,并且这一切不需要多少的代码。

posted on 2006-07-25 22:07 javen 阅读(945) 评论(6)  编辑 收藏 网摘

FeedBack:
2006-07-26 16:01 | 冷振兴[未注册用户]
我试了一下怎么不行啊。
  回复  引用    
2006-12-03 12:38 | Tiger!      
urlrewrite可以实现二级域名吗?
  回复  引用  查看    
2007-09-19 11:22 | listlofusage[未注册用户]
我用了之后也是不行,求完整版本,我的邮箱是 lihuimingcn@gmail.com
  回复  引用    
2008-08-06 04:41 | jameslin[未注册用户]
我测试了也不行。有没有个标准样板的global.asax.cs看一下?我的是IIS 7。

  回复  引用    
2008-10-27 22:43 | itmsn[未注册用户]
老兄你那能行吗?我这怎么不行。你那要是能运行出来,麻烦发个例子到我邮箱,让我学习一下。
  回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 459685




相关文章:

相关链接:
交流编程技巧,敬请访问:http://www.best-code.com

<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

搜索

 

常用链接

留言簿

随笔档案

最新评论

阅读排行榜

评论排行榜