首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

Step1 數據系統技術(一):基於 404 錯誤的 URL 重寫技術——虛擬主機環境下的最佳適配

     編輯:關於ASP.NET

技術源自原 cnblogs 程式,從中拆分出 DLL 復用。核心採404 錯誤觸發重寫:虛擬主機多不支援靜態檔案 URL 重寫,將 IIS 404 錯誤頁指向特定 ASPX,在其中調用重寫邏輯。

Error404.aspx 核心代碼

public class Error404 : System.Web.UI.Page {
  private void Page_Load(object sender, System.EventArgs e) {
    if (Request.QueryString != null) {
      string[] queryString = Request.RawUrl.Substring(Request.RawUrl.IndexOf("?")+1).Split(new char[]{';'});
      if (queryString.Length == 2 && queryString[0] == "404") {
        Uri uri = new Uri(queryString[1]);
        string query = uri.Query;
        if (query.StartsWith("?")) query = query.Substring(1);
        this.Context.RewritePath(uri.AbsolutePath, uri.UserInfo, query);
        (new UrlReWriteHandlerFactory()).GetHandler(this.Context, Request.RequestType, uri.PathAndQuery, Server.MapPath(uri.LocalPath)).ProcessRequest(this.Context);
        this.Context.Response.End();
      }
    }
  }
}

Web.config 重寫規則範例

<HttpHandler pattern="^/place/cn/([%0-9a-zA-Z/]*).aspx$"
    type="Step1.UrlRewriter.PageHandlerFactory,Step1.UrlRewriter"
    handlerType="Redirect"
    pageLocation="/place/Place.aspx?p=$1" />

效果:/place/cn/aaaaaaa.aspx 內部轉向至 /place/Place.aspx?p=aaaaaaa。

其餘代碼多取自 cnblogs 開源碼,有需求可參考原始碼或聯繫作者獲取。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved