翱翔.Net

释放.Net的力量
posts - 73, comments - 1112, trackbacks - 4, articles - 17
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

简单地址重写

Posted on 2005-06-02 15:57 Hover 阅读(2448) 评论(3)  编辑 收藏 所属分类: WebForm

 protected void Application_BeginRequest(Object sender, EventArgs e)
  {

   
   
   string strRawUrl = HttpContext.Current.Request.RawUrl;
   string strNewUrl;

   //*******************************************************************************************
   //分类地址重写
   if (Regex.IsMatch(strRawUrl, @"Post.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"Post.aspx", @"ShowClass.aspx\?ClassID=14");

    HttpContext.Current.RewritePath( strNewUrl );
   }
   else if (Regex.IsMatch(strRawUrl, @"Resources.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"Resources.aspx", @"ShowClass.aspx\?ClassID=13");

    HttpContext.Current.RewritePath( strNewUrl );
   }
   else if (Regex.IsMatch(strRawUrl, @"MobileApplications.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"MobileApplications.aspx", @"ShowClass.aspx\?ClassID=12");

    HttpContext.Current.RewritePath( strNewUrl );
   }
   else if (Regex.IsMatch(strRawUrl, @"Server.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"Server.aspx", @"ShowClass.aspx\?ClassID=11");

    HttpContext.Current.RewritePath( strNewUrl );
   }

   else if (Regex.IsMatch(strRawUrl, @"DataBase.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"DataBase.aspx", @"ShowClass.aspx\?ClassID=10");

    HttpContext.Current.RewritePath( strNewUrl );
   }
   else if (Regex.IsMatch(strRawUrl, @"WebServices.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"WebServices.aspx", @"ShowClass.aspx\?ClassID=7");

    HttpContext.Current.RewritePath( strNewUrl );
   }

   else if (Regex.IsMatch(strRawUrl, @"WindowsApplications.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"WindowsApplications.aspx", @"ShowClass.aspx\?ClassID=6");

    HttpContext.Current.RewritePath( strNewUrl );
   }

  else if (Regex.IsMatch(strRawUrl, @"WebApplications.aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"WebApplications.aspx", @"ShowClass.aspx\?ClassID=2");

    HttpContext.Current.RewritePath( strNewUrl );
   }
   //**********************************************************************************************
   //显示详细文章地址重写
   else if (Regex.IsMatch(strRawUrl, @"(\d+).aspx", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"(\d+).aspx", @"ShowPost.aspx\?id=$1");

    HttpContext.Current.RewritePath( strNewUrl );
   }
   else if (Regex.IsMatch(strRawUrl, @"ShowPost.aspx\?id=(\d+)", RegexOptions.IgnoreCase))
   {
    strNewUrl = Regex.Replace(strRawUrl, @"ShowPost.aspx\?id=(\d+)", @"$1.aspx");

    HttpContext.Current.Response.Redirect( strNewUrl );
   }
}
前面是重写。后面是逆操作.
效果见HTtp://ithero.net

Feedback

#1楼    回复  引用    

2005-06-02 16:04 by XiaoHui [未注册用户]
简单的这样Rewrite, 在1.1下面当页面PostBack的时候会有问题. 具体解决方法可以参见CS(CommunityServer)源代码. 里面有解决方法. 宝玉也发表过一篇这样的随笔.

#2楼 [楼主]   回复  引用  查看    

2005-06-02 16:11 by Hover      
谢了!会看的!

#3楼    回复  引用    

2006-06-17 13:41 by qian81 [未注册用户]
我点了其他地方的连接。就还是传递参数的。人家不可能在地址栏里打地址的吧

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: