Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

IIS 載入 Rewrite.dll 失敗 (紅色向下箭頭) 完整排查與權限修復

編輯:關於伺服器

現象

IIS 管理員中 ISAPI 篩選器 或 Web 服務擴展 顯示 Rewrite.dll 狀態為**紅色向下箭頭**,代表載入失敗,URL 重寫功能不可用。

核心原因:目錄/檔案權限不足

IIS 工作進程身分 (通常為 `IUSR`、`IIS_IUSRS`、`NETWORK SERVICE`、應用程式池身分) **無法讀取/執行** `Rewrite.dll` 及其所在目錄。

標準修復步驟 (Windows Server 2008 R2 / 2012 R2 / 2016 / 2019 / 10/11)

1. 確認 Rewrite.dll 位置

  • 常見路徑:C:\Windows\System32\inetsrv\rewrite.dll (URL Rewrite Module 官方安裝)
  • 或自訂路徑:D:\Rewrite\Rewrite.dll

2. 設定 NTFS 權限 (關鍵)

右鍵 `Rewrite.dll` 所在**資料夾** → 內容 → 安全性 → 編輯 → 新增,加入以下主體並給予 **讀取與執行、列出資料夾內容、讀取** 權限:

  • IIS_IUSRS (IIS 7+ 預設應用程式池群組,**必加**)
  • IUSR (匿名存取身分,**必加**)
  • NETWORK SERVICE (舊版相容)
  • **應用程式池自訂身分** (若網站用 `ApplicationPoolIdentity` 以外的自訂帳號)

避免: 加入 `Everyone`、`Users` 完全控制 — 造成安全風險。

3. ISAPI 篩選器 / Web 服務擴展 設定

  • ISAPI 篩選器: 網站 → ISAPI 篩選器 → 新增 → 可執行檔指向 `Rewrite.dll`、名稱 `Rewrite`。
  • Web 服務擴展: 伺服器節點 → Web 服務擴展 → 新增 → 檔案 `Rewrite.dll`、允許。

4. 重啟 IIS 生效

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 檢查相依性。

Copyright © Windows教程網 All Rights Reserved