1. ホーム
  2. .htaccess
  3. 【.htaccess】Options ディレクティブ / DirectoryIndex ディレクティブ

【.htaccess】Options ディレクティブ / DirectoryIndex ディレクティブ

Options ディレクティブ

クライアントがディレクトリ名の最後に / を指定して、そのディレクトリの中に、index.html ファイルがなかった場合、このようにディレクトリの中のファイルの一覧が表示されます。

内容を見せたくない場合、好ましくありませんね。

Options ディレクティブでは、ディレクトリに対してどの機能が使用可能かを制御することができます。

ディレクトリ内の一覧を見せないようにする構文例です。

Options -Indexes

“Option” に続いて、機能の値を記述します。

  • 複数の機能を指定する場合は、半角スペースで区切って指定します。
  • + や – を機能の値の前に付けることでディレクトリ毎の設定を変更できます。上位のディレクトリの設定に対して、追加、削除、していくことになります。
  • ↓ Options ディレクティブに指定可能な値一覧
    説明
    All MultiViews を除いた全ての機能が有効化。(デフォルト)
    ExecCGI mod_cgi による CGI スクリプトの実行可能化。
    FollowSymLinks シンボリックリンクを有効化。
    Includes mod_include が提供する SSI を有効化。
    IncludesNOEXEC SSI ⇒ 有効化。#exec コマンド / #exec CGI ⇒ 無効化。
    Indexes DirectoryIndex ディレクティブ(↓ で詳細記述)で指定したファイル (例えば index.html) がなければ、ディレクトリ一覧を表示許可。
    MultiViews リソースが複数の表現 (例えば、日本語や英語など) で利用できる場合、適切な言語や MIMEタイプ(Content-Type) を優先的に要求するコンテンツネゴシエーションを許可。
    SymLinksIfOwnerMatch シンボリック先のファイルやディレクトリが、シンボリックリンクの所有者と同じ権限である場合、シンボリックリンクを許可。
    None すべてのオプションを無効。

上記の構文の例では、オプションの値を “-Indexes” と指定し、ディレクトリの一覧の表示を許可する機能を、削除しています。

ブラウザで一覧は表示されなくなり、代わりに、403 Forbidden(アクセス権限がないエラー)が表示されます。

DirectoryIndex ディレクティブ

↑ で、クライアントがディレクトリ名の最後に / を指定し、index.html ファイルがなかった場合、ディレクトリの中のファイルの一覧が表示されることについて触れましたが、DirectoryIndex ディレクティブでは、ディレクトリインデックスを、index.html 以外に設定することができます。複数のディレクトリインデックスを指定している場合は、最初に見つかったものを返します。

DirectoryIndex index.html index.php top.html

上記の例では、index.html がなければ index.php、index.php がなければ top.html を呼び出します。

さらに、index.html も index.php も top.html も見つからない場合、
Options Indexes で一覧表示が許可されている場合 ⇒ ディレクトリのファイル一覧表示
Options Indexes で一覧表示が許可されていない場合 ⇒ 403 Forbidden