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

IIS 7+ ASP.NET URL 重寫配置完整指南:整合模式、處理常式對應、請求限制與 rewrite 模組

     編輯:關於ASP.NET

IIS 7 引入全新管線架構:**整合模式** 讓 ASP.NET 模組原生融入 IIS 處理管線,**URL Rewrite Module 2.0** 提供宣告式重寫規則,取代舊式 `IHttpHandlerFactory`/`HttpModule` 代碼。本文詳細說明 IIS 7+ 環境下 ASP.NET URL 重寫的完整配置步驟。

1. 安裝 URL Rewrite Module 2.0 (必要)

  • 下載:Microsoft URL Rewrite Module 2.0 (x86/x64)
  • 安裝後,IIS 管理員網站層級會出現 **「URL 重寫」** 圖示
  • Web.config 即可使用 `` 區段

2. 應用程式集區:選擇整合模式 vs 經典模式

模式特點適用場景
整合模式ASP.NET 模組參與完整 IIS 管線、效能最好、支援 URL Rewrite Module、靜態檔案也可經 ASP.NET 授權**新專案預設、強烈建議**
經典模式ASP.NET 管線獨立、相容舊版 HttpModule/Handler、需在 `` 註冊舊專案無法立即遷移、依賴經典管線行為

設定位置:IIS 管理員 → 應用程式集區 → 進階設定 → 受管理管線模式

3. 處理常式對應:讓 ASP.NET 處理自訂副檔名/無副檔名 URL

整合模式下,在 `` 註冊:



    
        
        
        
        
        
             
        
        
    

關鍵:請求限制 → 取消勾選「叫用處理常式時驗證檔案是否存在」,否則重寫至虛擬路徑會回傳 404。

4. URL Rewrite 規則實戰範例



    
        
            
            
                
                
                    
                    
                
                
            

            
            
                
                
            

            
            
                
                
                    
                
                
            

            
            
                
                
                    
                
                
            

            
            
                
                
                    
                    
                
                
            
        
        
        
        
            
                
                
            
            
                
                    
                
            
        
    

5. 常見問題排查

現象原因解決
重寫後回傳 404處理常式「驗證檔案存在」攔截Handler Mappings → 編輯 → 請求限制 → 取消勾選
規則不生效stopProcessing="true" 導致後續規則被跳過 / 正則錯誤檢查規則順序、使用「測試模式」驗證
CSS/JS/圖片 404相對路徑在重寫後層級改變頁面使用根相對路徑 `/css/...` 或 ``
Postback 後網址變成內部路徑`
` 未保留原始 URL
`Page.Form.Action = Request.RawUrl;` 或 `form action="."`
無限重寫循環規則互相觸發加入條件排除已重寫路徑、使用 `stopProcessing`

6. 效能最佳化建議

  • **靜態檔案排除**:規則條件加入 ``
  • **快取規則編譯**:URL Rewrite Module 會快取編譯後規則,避免頻繁修改 Web.config 導致應用程式重啟
  • **避免複雜正則**:簡單模式匹配效能指數級優於複雜正則
  • **輸出重寫慎用**:`outboundRules` 會解析整個 HTML 回應,高流量站點會顯著增加 CPU

7. 遷移舊專案 HttpModule/HandlerFactory 步驟

  1. 安裝 URL Rewrite Module
  2. 將舊邏輯轉換為 `` 宣告式規則
  3. 移除 ``、`` 註冊
  4. 應用程式集區切換至**整合模式**
  5. 測試所有重寫路徑、Postback、AJAX、靜態資源

IIS 7+ 整合模式 + URL Rewrite Module 是 ASP.NET URL 重寫的**現代標準解法**,棄用代碼式重寫,擁抱宣告式配置。

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