Apache HTTP サーバ バージョン 2.2

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.2 > モジュール

# Apache モジュール mod_dir

Available Languages: en | ja | ko | tr

説明: | 「最後のスラッシュ」のリダイレクトと、ディレクトリの インデックスファイルを扱う機能を提供する
ステータス: | Base
モジュール識別子: | dir_module
ソースファイル: | mod_dir.c

### 概要

ディレクトリインデックスは、次の二つのうちどちらかが利用されます:

- 一つ目は、ユーザが作成したファイルを用いるもので、通常 `index.html` というファイル名を使います。このファイル名は、 `DirectoryIndex` ディレクティブで 指定することができます。この機能は `mod_dir` モジュールで提供されます。
- もう一つの方法は、 サーバによって自動的に生成されるディレクトリリストを用いる場合です。 この機能は、`mod_autoindex` モジュールにより提供されます。

自動的なインデックス生成機能を削除 (もしくは交換) できるように、この二つの機能は分離されています。

なお `http://servername/foo/dirname` という URL へのリクエストがあった際に、`dirname` というディレクトリがあれば、「最後にスラッシュをつけた形」の URL へのリダイレクトを送出します。 ディレクトリへのアクセスはスラッシュで終わっている必要があり、 `mod_dir` は、`http://servername/foo/dirname/` へのリダイレクトを送出することになります。

### ディレクティブ

## DirectoryIndex ディレクティブ

説明: | クライアントがディレクトリをリクエストしたときに調べる リソースのリスト
構文: | `DirectoryIndex local-url [local-url] ...`
デフォルト: | `DirectoryIndex index.html`
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き: | Indexes
ステータス: | Base
モジュール: | mod_dir

クライアントが、ディレクトリ名の最後に「/」 を指定してディレクトリインデックスを要求する場合に探すリソースのリストを `DirectoryIndex` ディレクティブで設定します。 Local-url は、リクエストされたディレクトリに対応する、サーバ上のドキュメントの (% エンコードされた) URL で、普通はディレクトリ中のファイルの名前です。 複数の URL が設定された場合には、最初に見つかったものを返します。 それらが見つからず、`Indexes` オプションがセットされている場合、ディレクトリのリストを生成します。

### 例

`DirectoryIndex index.html`

`http://myserver/docs/` へのアクセスがあり、 `http://myserver/docs/index.html` が存在すれば、この URL が返されます。 もし存在しなければ、ディレクトリのリストが返されます。

注: ドキュメントが同じディレクトリ内に存在するは必要ありません。

`DirectoryIndex index.html index.txt /cgi-bin/index.pl`

とした場合、`index.html` と `index.txt` のどちらもディレクトリ内に存在しない場合、CGI スクリプト `/cgi-bin/index.pl` が実行されます。

## DirectorySlash ディレクティブ

説明: | パス末尾のスラッシュでリダイレクトするかどうかのオンオフをトグルさせる
構文: | `DirectorySlash On|Off`
デフォルト: | `DirectorySlash On`
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き: | Indexes
ステータス: | Base
モジュール: | mod_dir
互換性: | 2.0.51 以降

要求のあった URL がディレクトリを指すかどうかを、 `mod_dir` が調整するべきかどうかを `DirectorySlash` ディレクティブで設定します。

典型的には、ユーザが末尾のスラッシュ無しでリソースへのリクエストを発行し、 そして、そのリソースがディレクトリを指していた場合、`mod_dir` は、末尾にスラッシュを付加した上で同じリソースにリダイレクトさせます。 この挙動には幾つか理由があります:

- ユーザは、最終的にはリソースの別名 URL をリクエストすることになる。
- `mod_autoindex` が期待通りに動く。`mod_autoindex` の生成するリンクはパスを出力しませんので、スラッシュがない場合は間違ったパスを 指してしまうことになります。
- `DirectoryIndex` は、 末尾にスラッシュがついているリクエストについてのみ評価される。
- HTML ページの相対 URL 参照が正しく動作する。

とはいえ、もしこういった効果を望まない、かつ、 上記のような理由が当てはまらない場合は、リダイレクトを次のようにしてオフにできます:

`# see security warning below!
<Location /some/path>
DirectorySlash Off
SetHandler some-handler
</Location>`

### セキュリティ警告

末尾のスラッシュでのリダイレクトをオフにすると、結果的に情報漏洩を 招くことになるかもしれません。 `mod_autoindex` が有効 (`Options +Indexes`) で、 `DirectoryIndex` が有効なリソース (例えば `index.html`) を指していて、また、要求のあった URL に特別な ハンドラが設定されていない場合を考えてみてください。 この場合末尾にスラッシュのついているリクエストに対しては `index.html` ファイルが返されます。しかしスラッシュのないリクエストに対しては、 ディレクトリの内容一覧を返してしまいます。

Available Languages: en | ja | ko | tr