URL Rewriter (官方/社群版) 透過 `HttpModule` 攔截請求,依正則規則重寫路徑,實現 SEO 友善、隱藏技術細節的 URL。核心設定於 `Web.config`。
~/Product/([0-9]+)\.html
~/Product.aspx?id=$1
~/Category/([a-zA-Z0-9_-]+)\.html
~/Category.aspx?name=$1
~/.*\.aspx
~/$0
| 語法 | 說明 | 範例 |
|---|---|---|
| `~` | 應用程式根目錄 | `~/Product/...` |
| `$1` `$2` | 捕獲群組反向引用 | `SendTo="~/Page.aspx?id=$1"` |
| 一個以上數字 | ID、頁碼 | |
| `[a-zA-Z0-9_-]+` | 英數字、底線、連字號 (Slug) | 分類名、文章別名 |
| `\.` | 字面點號 (需跳脫) | `\.html`、`\.aspx` |
| `.*` | 任意字元 (貪婪),慎用 | 捕獲剩餘路徑 |
IIS 預設僅將 `.aspx`、`.ashx` 等對應至 `aspnet_isapi.dll`。若重寫目標為 `.html`,請求永遠不進入 ASP.NET 管線,重寫失效。
或更佳:使用 **URL Rewrite Module 2.0** (IIS 原生模組),設定於 `web.config` `
URL Rewriter 以 `HttpModule` + 正則規則實現 URL 重寫,核心在於 `Web.config` 設定正確、靜態副檔名映射至 ASP.NET、規則順序優化。新專案優先採用 IIS 原生 URL Rewrite Module 或 ASP.NET Core 端點路由。