IIS 管理員中 ISAPI 篩選器 或 Web 服務擴展 顯示 Rewrite.dll 狀態為**紅色向下箭頭**,代表載入失敗,URL 重寫功能不可用。
IIS 工作進程身分 (通常為 `IUSR`、`IIS_IUSRS`、`NETWORK SERVICE`、應用程式池身分) **無法讀取/執行** `Rewrite.dll` 及其所在目錄。
C:\Windows\System32\inetsrv\rewrite.dll (URL Rewrite Module 官方安裝)D:\Rewrite\Rewrite.dll右鍵 `Rewrite.dll` 所在**資料夾** → 內容 → 安全性 → 編輯 → 新增,加入以下主體並給予 **讀取與執行、列出資料夾內容、讀取** 權限:
IIS_IUSRS (IIS 7+ 預設應用程式池群組,**必加**)IUSR (匿名存取身分,**必加**)NETWORK SERVICE (舊版相容)避免: 加入 `Everyone`、`Users` 完全控制 — 造成安全風險。
iisreset /restart
或管理員 PowerShell:Restart-Service W3SVC, WAS -Force
| 可能原因 | 排查方法 |
|---|---|
| DLL 位元數不符 (32/64 bit) | 確認 OS、IIS、Rewrite.dll 皆為 64 位元 (現代環境均為 64bit)。 32 位元 DLL 需在 32 位元應用程式池載入 (已淘汰)。 |
| 相依 DLL 缺失 | 用 Dependency Walker (depends.exe) 開啟 Rewrite.dll,檢查紅色缺失項 (通常為 VC++ Runtime)。 安裝 Visual C++ Redistributable。 |
| 路徑含中文/特殊字元 | 移至純英文路徑 (如 C:\Rewrite\)。 |
| 註冊表殘留舊版資訊 | 註冊表 HKLM\SOFTWARE\Microsoft\InetStp\Rewrite 檢查路徑正確性。 |
# web.config 測試規則
<rule name="TestRewrite" stopProcessing="true">
<match url="^test-rewrite$" />
<action type="Rewrite" url="/default.aspx" />
</rule>
瀏覽 `https://your-site/test-rewrite` 應顯示首頁內容且網址不變。
**99% 的紅箭頭問題源於 NTFS 權限缺失**。按順序:`IIS_IUSRS` + `IUSR` 讀取/執行權限 → 正確註冊 ISAPI/擴展 → `iisreset`。若仍失敗,用 Dependency Walker 檢查相依性。