程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 在global.asax中實現URL重寫

在global.asax中實現URL重寫

編輯:關於ASP.NET

看到有很多網站都用到了URL重寫的功能,在網上找了很多資料,實現的方法有多種,可是大部分都很難理解,過程也比較復雜,不過我找到一種很簡單也很容易理解的實現URL重寫的方法,只需要在global.asax.cs文件中添加一個函數就可以實現,下面的代碼是我根據在網上找到的代碼寫的,用在了我做的一個網站上,當然因為我的需求不同,跟原來的代碼有點變化,如下:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
  string oldUrl = HttpContext.Current.Request.RawUrl;
  
  string pattern = @"^(.+)News(d+).html(?.*)*$";
  string replace = "$1NewsDetails.aspx?NID=$2";
  
  string patternCul = @"^(.+)Culture(d+).html(?.*)*$";
  string replaceCul = "$1CultureDetails.aspx?CID=$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);
  }
  if (Regex.IsMatch(oldUrl, patternCul, RegexOptions.IgnoreCase | RegexOptions.Compiled))
  {
    string newUrl = Regex.Replace(oldUrl, patternCul, replaceCul,
      RegexOptions.Compiled | RegexOptions.IgnoreCase);
    this.Context.RewritePath(newUrl);
  }
}

這裡我實現了2個地址的URL重寫,看第一個的效果就是當我在地址欄訪問:/News12.html的時候,其實訪問的地址是:NewsDetails.aspx?NID=12這個地址,(仔細琢磨一下代碼就可以看明白了,不用我多說了吧:))就這樣簡單的實現了URL的重寫,我個人認為這樣重寫之後有一個好處,我把GET方法傳遞的參數變量給隱藏起來了,增強了安全性,還有給人一種誤會認為你的網站是靜態的,呵呵....

當然借助於強大的正則表達式,你只要寫好patten,replace裡面的正則,那麼網頁就可以按照你任何想要的方式進行重寫,當然這要在服務器支持的前提下.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved