mod_dir - Apache HTTP サーバ バージョン 2.2

Apache Server 2.2

<-

Apache モジュール mod_dir

この日本語訳はすでに古くなっている 可能性があります。 最近更新された内容を見るには英語版をご覧下さい。
説明:「最後のスラッシュ」のリダイレクトと、ディレクトリの インデックスファイルを扱う機能を提供する
ステータス: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/ へのリダイレクトを送出することになります。

top

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.htmlindex.txt のどちらもディレクトリ内に存在しない場合、CGI スクリプト /cgi-bin/index.pl が実行されます。

top

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 ファイルが返されます。しかしスラッシュのないリクエストに対しては、 ディレクトリの内容一覧を返してしまいます。

top

FallbackResource ディレクティブ

説明:Define a default URL for requests that don't map to a file
構文:FallbackResource disabled | local-url
デフォルト:None - httpd will return 404 (Not Found)
コンテキスト:サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き:Indexes
ステータス:Base
モジュール:mod_dir
互換性:Apache HTTP Server 2.2.16 and later - The disabled argument is supported since 2.2.24

このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。