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

ASP.NET 2.0 URL 對應功能完整指南:urlMappings 設定、舊網址轉向、簡化複雜 URL、安全性與相容性考量

     編輯:關於ASP.NET

ASP.NET 2.0 內建 urlMappings 功能,透過 web.config 宣告式設定將特定 URL 映射至另一目標 URL,無需程式碼、無需 ISAPI Rewrite、無需 HTTP 模組,即可實現舊網址轉向、簡化複雜 URL、隱藏真實頁面結構等需求。

基本語法與設定

<configuration>
  <system.web>
    <urlMappings enabled="true">
      <add url="~/Homepage.aspx" mappedUrl="~/OriginalHome.aspx" />
      <add url="~/Products/Category.aspx" mappedUrl="~/Catalog/Category.aspx" />
      <add url="~/OldPage.aspx" mappedUrl="~/NewPage.aspx" />
    </urlMappings>
  </system.web>
</configuration>

核心屬性

屬性說明
enabledtrue 啟用,false 停用(預設 false)
url原始請求 URL(相對路徑,支援 ~),使用者瀏覽器見到的網址
mappedUrl實際處理請求的目標 URL(相對路徑,支援 ~),伺服器內部執行

運作機制

  1. 使用者請求 https://site/Homepage.aspx。
  2. ASP.NET 執行管線早期(HttpApplication.BeginRequest 階段)攔截請求。
  3. 比對 urlMappings 集合,找到匹配項。
  4. 內部重寫請求路徑為 mappedUrl(OriginalHome.aspx)。
  5. 瀏覽器網址列保持 Homepage.aspx,使用者無感知。
  6. 目標頁面正常執行生命週期,Request.RawUrl 仍為原始 URL。

四大核心優勢

優勢說明應用場景
舊網址無縫轉向不通知使用者、不修改書籤、搜尋引擎索引平滑遷移網站改版、頁面重命名、架構調整
簡化複雜 URL對外公開簡短易記網址,內部映射至參數化長 URL~/p/123 → ~/ProductDetail.aspx?id=123&cat=5&view=detail
導航選單整合SiteMap 節點使用簡化 URL,urlMappings 解析至實際頁面ASP.NET 官網選單結構
資訊安全強化隱藏真實頁面名稱、目錄結構、技術細節防止路徑遍歷探測、降低攻擊面

進階:支援查詢字串傳遞

urlMappings 僅比對路徑部分,查詢字串自動保留並傳遞至目標頁面:

<add url="~/Search.aspx" mappedUrl="~/SearchResults.aspx" />

限制與注意事項

  • 不支援正則表達式:僅精確路徑匹配,無法捕捉動態段落(如 /product/{id})。
  • 不支援萬用字元:每個映射需明確列出。
  • 大小寫敏感:依檔案系統/IIS 設定,建議統一小寫。
  • 僅適用 .aspx 處理管線:靜態檔案、PHP、ASP 請求不經 ASP.NET 管線,不受影響。
  • PostBack 表單 Action:頁面回傳時 <form action 可能為映射後 URL,需配合 Form.Action 修正或使用無表單頁面。

ASP.NET 1.x / 2.0 Beta 相容方案

正式版釋出前,可使用 Steve Smith 部落格提供的 HttpModule 實作:

public class UrlRewriterModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += OnBeginRequest;
    }
    void OnBeginRequest(object sender, EventArgs e)
    {
        HttpApplication app = (HttpApplication)sender;
        string path = app.Request.Path.ToLower();
        // 簡易映射表
        if (path == "/homepage.aspx") app.Context.RewritePath("/originalhome.aspx");
    }
    public void Dispose() { }
}

web.config 註冊:<add name="UrlRewriter" type="UrlRewriterModule" />

與 ASP.NET 4.0+ Routing 比較

特性urlMappings (2.0)Routing (4.0+)
模式匹配精確路徑路由範本 {controller}/{action}/{id}
雙向 URL 生成不支援支援 Url.RouteUrl
RESTful 風格困難原生支援
效能極佳(早期管線)優(路由表快取)

urlMappings 是 ASP.NET 2.0 時代最輕量的 URL 重寫方案,雖功能受限,但零程式碼、宣告式、效能極佳,適合靜態映射、舊網址遷移、簡化 URL 等明確場景。

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