共用方式為


預設檔 < 預設值Document>

概觀

元素 <defaultDocument> 可讓您啟用或停用網站或應用程式的預設檔行為。 這個專案包含 <files> 子專案,其中包含專案的 <add> 集合。 每個 <add> 元素都會定義月臺或應用程式在收到根目錄要求時,月臺或應用程式會返回用戶端瀏覽器的預設檔。

元素 <defaultDocument> 也可以包含一或多個 <remove> 元素。 每個 <remove> 元素都會移除從 Internet Information Services (IIS) 7 伺服器上較高層級設定檔繼承的特定預設檔檔。 您也可以使用 <clear> 元素來移除組態階層中較高定義的所有預設檔設定。

預設會啟用預設檔,IIS 7 會在ApplicationHost.config檔案中定義下列預設檔檔做為全伺服器預設值:

  • Default.htm
  • Default.asp
  • Index.htm
  • Index.html
  • Iisstart.htm

(如果您在 Web 服務器上安裝 ASP.NET,安裝程式會將 Default.aspx 檔案新增至此 list.)

根據預設,當網站或應用程式根目錄的要求送達時,IIS 7 會根據您在 元素中 <defaultDocument> 定義的檔案名,將回應傳送至瀏覽器。 IIS 會嘗試以出現在 元素中 <defaultDocument> 的順序傳回正確的檔案。 如果Default.htm檔案存在,IIS 會將它傳送至用戶端瀏覽器。 如果Default.htm檔案不存在,IIS 會嘗試將 Default.asp 檔案傳送至瀏覽器,如果 Default.asp 檔案不存在,IIS 會嘗試將Index.htm檔案傳送至瀏覽器。 IIS 會以這種方式繼續,直到嘗試將每個預設檔檔傳送至用戶端瀏覽器為止。

注意

如果您正確排序此預設檔案清單,您可以改善 IIS 的效能。 例如,如果您打算將 Index.php 用於網站所有資料夾中的首頁,並將 Index.php 新增至預設檔案清單底部,則 IIS 必須檢查清單中每個預設檔,然後再嘗試將 Index.php 傳回用戶端瀏覽器。 視網站中的資料夾數目和用戶端瀏覽器要求數目而定,這可能會影響您的效能。

如果您停用預設檔但已啟用瀏覽目錄,IIS 會在要求根目錄從瀏覽器送達時傳回目錄清單。 如果您同時停用預設檔和瀏覽目錄,IIS 會將「HTTP 404 檔案不存在」錯誤傳送給瀏覽器。

相容性

版本 備註
IIS 10.0 未在 IIS 10.0 中修改專案 <defaultDocument>
IIS 8.5 未在 IIS 8.5 中修改專案 <defaultDocument>
IIS 8.0 未在 IIS 8.0 中修改專案 <defaultDocument>
IIS 7.5 未在 IIS 7.5 中修改專案 <defaultDocument>
IIS 7.0 元素 <defaultDocument> 是在 IIS 7.0 中引進。
IIS 6.0 元素 <defaultDocument> 會取代IIsWebService Metabase 物件上DirBrowseFlags屬性的 IIS 6.0 DefaultDoc屬性和EnableDefaultDoc值。

安裝程式

元素 <defaultDocument> 包含在 IIS 7 的預設安裝中。

作法

如何新增應用程式或網站的預設檔

  1. 開啟 [Internet Information Services (IIS) 管理員

    • 如果您使用 Windows Server 2012 或 Windows Server 2012 R2:

      • 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services (IIS) Manager]。
    • 如果您使用 Windows 8 或 Windows 8.1:

      • 按住Windows鍵,按字母X,然後按一下[主控台]。
      • 按一下 [系統管理工具],然後按兩下 [ Internet Information Services (IIS) Manager]。
    • 如果您使用 Windows Server 2008 或 Windows Server 2008 R2:

      • 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
    • 如果您使用 Windows Vista 或 Windows 7:

      • 在工作列上,按一下 [開始],然後按一下[主控台]。
      • 按兩下 [系統管理工具],然後按兩下 [ Internet Information Services] (IIS) Manager
  2. 在 [ 連線] 窗格中,展開伺服器名稱、展開 [網站],然後流覽至您要設定預設檔的網站或應用程式。

  3. 在 [ 首頁] 窗格中,按兩下 [預設檔]。
    [首頁] 窗格的螢幕擷取畫面,其中已醒目提示 [預設檔] 選項。

  4. 在 [ 動作 ] 窗格中,按一下 [ 新增...]

  5. 在 [ 新增預設檔 ] 對話方塊中,輸入您要在 [ 名稱 ] 方塊中新增的預設檔案名稱,然後按一下 [ 確定]。
    [新增預設檔] 對話方塊的螢幕擷取畫面。

  6. 如有必要,請在 [ 動作 ] 窗格中選取清單中的預設檔,然後按一下 [ 上移 ] 或 [ 下移 ] 來定義 IIS 應該搜尋預設檔案清單的順序。

  7. 在 [ 預設檔 ] 警示方塊中,按一下 [ ] 以拒絕父設定層級的設定繼承,或按一下 [ ] 或 [ 取消 ] 以取消預設檔順序中的變更。
    [預設檔] 警示方塊的螢幕擷取畫面,其中焦點位於 [是] 選項。

  8. 如有必要,請按一下 [動作] 窗格中的 [移除],移除您不想做為預設檔的任何檔案名。

組態

您可以藉由變更 元素中的 <defaultDocument> 元素順序,變更 IIS 處理預設檔的順序 <add>

您可以在 <defaultDocument> ApplicationHost.config檔案和適當Web.config檔案中的月臺、應用程式或 URL 層級,設定伺服器層級的專案。

屬性

屬性 描述
enabled 選擇性的 Boolean 屬性。

指定啟用預設檔。

預設值是 true

子元素

元素 描述
files 選擇性項目。

指定可傳回為預設檔的檔案名清單。

組態範例

下列組態範例會在月臺或應用程式的Web.config檔案中包含時,啟用月臺或應用程式的預設檔。 然後,它會將檔案名 「Home.html」 新增至網站或應用程式的預設檔案清單。

<configuration>
   <system.webServer>
      <defaultDocument enabled="true">
         <files>
            <add value="home.html" />
         </files>
      </defaultDocument>
   </system.webServer>
</configuration>

範例程式碼

下列範例會在名為 Contoso 的網站上啟用預設檔,然後將名為 Home.html 的檔案新增至網站的預設檔案清單。

AppCmd.exe

appcmd.exe set config "Contoso" /section:defaultDocument /enabled:true /+files.[value='home.html']

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

    private static void Main() {
        
        using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetWebConfiguration("Contoso");
            
            ConfigurationSection defaultDocumentSection = config.GetSection("system.webServer/defaultDocument");
            
            defaultDocumentSection["enabled"] = true;
            
            ConfigurationElementCollection filesCollection = defaultDocumentSection.GetCollection("files");
            ConfigurationElement addElement = filesCollection.CreateElement("add");
            addElement["value"] = @"home.html";
            filesCollection.AddAt(0, addElement);
            
            serverManager.CommitChanges();
        }
    }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Class Sample
   Shared Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim defaultDocumentSection As ConfigurationSection = config.GetSection("system.webServer/defaultDocument")

      defaultDocumentSection("enabled") = True

      Dim filesCollection As ConfigurationElementCollection = defaultDocumentSection.GetCollection("files")
      Dim addElement As ConfigurationElement = filesCollection.CreateElement("add")
      addElement("value") = "home.html"
      filesCollection.AddAt(0, addElement)

      serverManager.CommitChanges()
   End Sub
End Class

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";

var defaultDocumentSection = adminManager.GetAdminSection("system.webServer/defaultDocument",
   "MACHINE/WEBROOT/APPHOST/Contoso");

defaultDocumentSection.Properties.Item("enabled").Value = true;

var filesCollection = defaultDocumentSection.ChildElements.Item("files").Collection;

var addElement = filesCollection.CreateNewElement("add");
addElement.Properties.Item("value").Value = "home.html";
filesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"

Set defaultDocumentSection = adminManager.GetAdminSection("system.webServer/defaultDocument", _
   "MACHINE/WEBROOT/APPHOST/Contoso")

defaultDocumentSection.Properties.Item("enabled").Value = True  

Set filesCollection = defaultDocumentSection.ChildElements.Item("files").Collection

Set addElement = filesCollection.CreateNewElement("add")
addElement.Properties.Item("value").Value = "home.html"
filesCollection.AddElement addElement, 0

adminManager.CommitChanges