IIS 7, 8 - 自訂錯誤頁面

IIS 預設的錯誤頁面很單調,而且通常不會跟我們網站的風格相符,但好險我們可以自訂錯誤頁面,製作符合自己網站風格的錯誤頁面雖然不是必要的,但如果規劃良好的話,可以提升網站訪客的瀏覽體驗哦。

IIS 8 預設 404 頁面

網站中訪客最常看見的的錯誤應該非 404 Not Found 莫屬,如果我們在 404 頁面上提供返回首頁、返回上一頁、站內搜尋等功能,訪客會覺得很貼心,讓他們更願意待在這個網站上。

自訂 IIS 錯誤頁面

開啟 Internet Information Services (IIS) 管理員,在「站台」清單中選擇要修改的網站,進入 [錯誤網頁] 功能。

點選右側 [編輯功能設定] 動作,設定錯誤回應選項,選擇 [自訂錯誤網頁] 或 [本機要求的詳細錯誤及遠端要求的自訂錯誤網頁] 都可以。

  • 自訂錯誤網頁
    對本機或是別台電腦的要求,皆顯示自訂錯誤。
  • 詳細錯誤
    對本機或是別台電腦的要求,皆顯示詳細錯誤原因,避免在正式環境使用這個選項,以免洩漏伺服器或程式的重要資訊。
  • 本機要求的詳細錯誤及遠端要求的自訂錯誤網頁
    本機要求顯示詳細錯誤原因,別台電腦要求顯示自訂錯誤頁面。

在 [錯誤頁面] 選擇要自訂的狀態碼

在 [編輯自訂錯誤網頁] 指定檔案

  • 從靜態檔案插入內容至錯誤回應
    錯誤網頁是靜態 html 可以選擇此項,如果你沒有準備多語言版本就不要勾選嘗試以用戶端語言傳回錯誤檔案,可以輸入相對路徑或絕對路徑,建議使用相對路徑會比較簡單,例如:
    • ErrorPages\404.html
      相對路徑,實際的檔案路徑是網站根目錄\ErrorPages\404.html
    • C:\ErrorPages\404.html
      絕對路徑,你可能會遇到以下錯誤訊息,解決方法請參閱下個段落。

      在 web.config 檔案的 system.webServer/httpErrors 區段中不允許絕對實體路徑

  • 執行此站台上的URL
    錯誤網頁是 aspx 或 asp 必須選擇此項,當然 html 也可以,例如:
    • /ErrorPages/404.aspx
      實際的檔案路徑是網站根目錄\ErrorPages\404.aspx
    • /ErrorPages/404.html
  • 回應 302 重新導向
    導向到指定的頁面,注意這不會回應原本的狀態碼,而是回應 302 Redirect,例如:

錯誤網頁須賦予 [IIS AppPool\應用程式集區名稱] 或 [IIS_IUSRS] 的 [讀取和執行] 權限,不然會出現 500 錯誤。

[從靜態檔案插入內容至錯誤回應] 使用絕對路徑時發生 500.19 錯誤

預設情況下,你無法在 system.webServer/httpErrors 指定絕對路徑檔案,否則會收到錯誤訊息。

HTTP 錯誤 500.19 - Internal Server Error
在 web.config 檔案的 system.webServer/httpErrors 區段中不允許絕對實體路徑 “C:\ErrorPages\404.html”。請改用相對路徑。

解決方法(適用 IIS 7.5 及以上版本):

  • 開啟 Internet Information Services (IIS) 管理員
  • 在左側樹狀目錄點一下自己的電腦
  • 開啟設定編輯器
  • 將 system.webServer/httpErrors 區段的 allowAbsolutePathsWhenDelegated 屬性設為 true,這是 IIS 7.5 才新增的屬性。

Reference

編輯錯誤網頁設定對話方塊
http://technet.microsoft.com/zh-tw/library/cc742484.aspx
httpErrors
http://www.iis.net/configreference/system.webserver/httperrors