既定のドキュメント <defaultDocument>

  • 概要
  • 互換性
  • セットアップ
  • 方法
  • 構成
  • サンプル コード

※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。

概要

<defaultDocument> 要素を使用すると、Web サイトまたはアプリケーションで既定のドキュメントの動作を有効または無効にすることができます。この要素には <files> 子要素が含まれ、この子要素には <add> 要素のコレクションが含まれます。各 <add> 要素は、サイトがルート ディレクトリへの要求を受信したときに、サイトまたはアプリケーションがクライアント ブラウザーに返す既定のドキュメントを定義します。

<defaultDocument> 要素は、1 つ以上の <remove> 要素を含むこともできます。各 <remove> 要素は、インターネット インフォメーション サービス (IIS) 7.0 サーバー上の上位の構成ファイルから継承された特定の既定のドキュメント ファイルを削除します。また、<clear> 要素を使用して、構成階層の上位で定義されているすべての既定のドキュメント設定を削除することもできます。

既定のドキュメントは既定で有効になっており、IIS 7.0 では、ApplicationHost.config ファイルの次の既定のドキュメント ファイルをサーバー全体の既定として定義しています。

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

(Web サーバーに ASP.NET をインストールする場合は、インストール プロセスにより Default.aspx ファイルがこの一覧に追加されます。)

既定では、サイトまたはアプリケーションのルート ディレクトリに対する要求を受信したら、IIS 7.0 は <defaultDocument> 要素で指定されているファイル名に基づいてブラウザーに応答を送信します。IIS は、正しいファイルを <defaultDocument> 要素で指定されている順序で返そうと試みます。Default.htm ファイルが存在する場合、IIS はそれをクライアント ブラウザーに送信します。Default.htm ファイルが存在しない場合は、IIS は Default.asp ファイルをブラウザーに送信しようと試み、さらに Default.asp ファイルが存在しない場合には、Index.htm ファイルをブラウザーに送信しようと試みます。IIS は、それぞれの既定のドキュメント ファイルをクライアント ブラウザーに送信しようと試みるまでこの手順を続けます。

: この既定のドキュメントの一覧を正しく順序付けすると、IIS のパフォーマンスが向上します。たとえば、Web サイトのすべてのフォルダーのホーム ページに Index.php を使用する場合に、既定のドキュメント一覧の一番下に Index.php を追加してしまうと、IIS は Index.php をクライアント ブラウザーに返そうと試みる前に、一覧のそれぞれの既定のドキュメントを確認しなければならなくなります。そうすると、Web サイト内のフォルダーの数およびクライアント ブラウザーの要求の数によっては、パフォーマンスが低下する場合があります。

既定のドキュメントを無効にしてもディレクトリの参照が有効になっている場合、IIS は、ルート ディレクトリへの要求をブラウザーから受信するとディレクトリ一覧を返します。既定のドキュメントとディレクトリの参照をどちらも無効にしている場合は、IIS は "HTTP 404 ファイルが存在しません" というエラーをブラウザーに送信します。

互換性

  IIS 7.0 IIS 6.0
注意 <defaultDocument> は IIS 7.0 で新たに導入された要素です。

<defaultDocument> 要素は、IIS 6.0 の IIsWebService メタベース オブジェクトの DefaultDoc プロパティ、および DirBrowseFlags プロパティの EnableDefaultDoc 値に代わるものです。

セットアップ

<defaultDocument> 要素は、IIS 7.0 の既定のインストールに含まれています。

方法

アプリケーションまたはサイトの既定のドキュメントを追加する方法

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。

  2. [接続] ウィンドウで当該サーバー名を展開して [サイト] を展開し、既定のドキュメントを構成する Web サイトまたはアプリケーションを選択します。

  3. [ホーム] ウィンドウで [既定のドキュメント] をダブルクリックします。

    拡大

  4. [操作] ウィンドウで [追加] をクリックします。

  5. [既定のドキュメントを追加] ダイアログ ボックスで、追加する既定のドキュメントの名前を [名前] ボックスに入力し、[OK] をクリックします。

    拡大

  6. 必要に応じて、[操作] ウィンドウで一覧内の既定のドキュメントを選択し、[上へ移動] または [下へ移動] をクリックして、IIS で既定のドキュメントの一覧が検索される順序を定義します。

  7. [既定のドキュメント] 警告ボックスで、親構成レベルからの構成の継承を拒否する場合は [はい] を、既定のドキュメントの順序に加えた変更をキャンセルする場合は [いいえ] または [キャンセル] をクリックします。

    拡大

  8. 必要に応じて、[操作] ウィンドウで [削除] をクリックして、既定のドキュメントとして使用しないファイル名を削除します。

構成

IIS が既定のドキュメントを処理する順序を変更するには、<defaultDocument> 要素内の <add> 要素の順序を変更します。

サーバー レベルでの <defaultDocument> 要素の構成は ApplicationHost.config ファイルで、サイト、アプリケーション、または URL レベルでの構成は該当する Web.config ファイルで、それぞれ設定できます。

属性

属性 説明
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 という名前の Web サイト上の既定のドキュメントが有効になります。また、同サイトの既定のドキュメントの一覧に 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