Apache module mod_autoindex

### Apache HTTP Server Version 1.3

# Module mod_autoindex

自動的にディレクトリのインデックスを作る機能を提供するモジュール。

ステータス: Base
ソースファイル: mod_autoindex.c
モジュール識別子: autoindex_module

## 概要

ディレクトリのインデックスは二つの情報源のうちの 一つから生成できます:

- 普通は `index.html` と呼ばれる ユーザによって書かれたファイル。 DirectoryIndex ディレクティブでこのファイル名を設定します。 これは `mod_dir`で 制御されます。
- もしくは、サーバによって生成された一覧。 その他のディレクティブでこの一覧の書式を制御します。 AddIcon, AddIconByEncoding と AddIconByType を使うことで、様々なファイルタイプに対してアイコン一覧を セットします。つまり、リストされたファイル毎に、 ファイルにマッチした一番最初のアイコンが表示されます。 これらは mod_autoindex で制御されます。

望むならば、自動インデックス生成を完全に除去 (あるいは置換) できるように、この二つの機能は分離されています。

自動インデックス生成は `Options +Indexes` を使うことで有効になります。詳細については、 Options ディレクティブをご覧下さい。

もし `FancyIndexing` オプションが 有効になっているか、 `IndexOptions` ディレクティブに `FancyIndexing` が与えられているならば、 列の先頭は表示の順番を制御するリンクになります。 先頭のリンクを選択すると、一覧は再生成されて その列の値でソートされます。 同じ先頭を続けて選択すると、交互に昇順と降順とになります。

"Size" でソートした場合は、用いられるのは 実際のファイルのサイズであって、 表示の値ではないことに注意してください - たとえ両方ともが "1K" と表示されていたとしても、 1010 バイトのファイルは必ず 1011 バイトのファイルよりも前 (昇順の場合) に表示されます。

## ディレクティブ

- AddAlt
- AddAltByEncoding
- AddAltByType
- AddDescription
- AddIcon
- AddIconByEncoding
- AddIconByType
- DefaultIcon
- FancyIndexing
- HeaderName
- IndexIgnore
- IndexOptions
- IndexOrderDefault
- ReadmeName

参照: Options と DirectoryIndex。

## Autoindex リクエストクエリー引数

コラムソートのヘッダ自体が、ディレクトリのリストの順番を変更する 自分自身を参照するリンクです。クエリーオプションは `X=Y` の形式で、`X` には `N` (file Name), `M` (file last Modified date), `S` (file Size), `D` (file Description) の中から一つ、`Y` には `A` (Ascending) または `D` (Descending) のどちらかが入ります。

ファイル名以外がソートのキーとして使われた場合は、 ファイル名が常に二つ目のキーとなります。 (ソートにファイル名が使われた場合は二つ目のキーは必要ありません。 ファイル名は一意であることが保証されているので、ソート順は 確定するからです。)

例:

URL `http://your.server.name/foo/` がディレクトリインデクスを生成する場合、以下の URL では異なるソート順が生成されます:

- `http://your.server.name/foo/?M=D` はディレクトリを last modified date の降順でソートします。
- `http://your.server.name/foo/?D=A` はディレクトリを file description の昇順でソートします。
- `http://your.server.name/foo/?S=A` はディレクトリを file size の昇順でソートします。

ディレクトリのデフォルトの順序の設定は `IndexOrderDefault` を見てください。

ディレクトリのリストが、あるコラムのどちらかの方向(昇順または降順) を指定された場合、そのコラムの上部にあるリンクは逆順になり、 同じコラムの逆方向でのソートを可能にします。

## AddAlt ディレクティブ

構文: AddAlt string file [file] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

これは FancyIndexing において、アイコンの代わりに表示する代替テキストを設定します。 File は、説明するファイルのファイル拡張子、 ファイル名の一部、ワイルドカード表現、完全なファイル名の どれかになります。 String は二重引用符 (`"`) で囲みます。 この文字列は、クライアントが画像を表示できない場合や 画像のロードを無効にしている場合に表示されます。

例:

        AddAlt "PDF" *.pdf
        AddAlt "Compressed" *.gz *.zip *.Z

## AddAltByEncoding ディレクティブ

構文: AddAltByEncoding string MIME-encoding [MIME-encoding] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

これは、 FancyIndexing において、アイコンの代わりに表示する代替文字列を設定します。 MIME-encoding は有効な符号化、例えば `x-compress` です。 String は、二重引用符 (`"`) で囲みます。 この文字列は、クライアントが画像を表示できない場合や 画像のロードを無効にしている場合に表示されます。

例:

        AddAltByEncoding "gzip" x-gzip

## AddAltByType ディレクティブ

構文: AddAltByType string MIME-type [MIME-type] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

これは、 FancyIndexing において、アイコンの代わりに表示する代替文字列を設定します。 MIME-type は有効なタイプ、例えば `text/html` です。 String は、二重引用符 (`"`) で囲みます。 この文字列は、クライアントが画像を表示できない場合や 画像のロードを無効にしている場合に表示されます。

例:

        AddAltByType "TXT" text/plain

## AddDescription ディレクティブ

構文: AddDescription "string" file|directory [file|directory] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

Index OptionsFancyIndexing において、ファイルとディレクトリに対して表示する説明を設定します。 file|directory は説明するファイルやディレクトリのファイル拡張子、 ファイル名の一部、ディレクトリ名、ワイルドカード表現、完全なファイル名か ディレクトリ名のどれかになります。 String は二重引用符 (`"`) で囲みます。

> `AddDescription "The planet Mars" /web/pics/mars.gif`

説明領域は 23 バイトの幅です。ディレクトリに対して `IndexOptions SuppressSize` オプションが有効になっていれば 7 バイト追加、 `IndexOptions SuppressLastModified` オプションが有効になっていれば 19 バイト追加されます。 ですから、デフォルトの説明コラムの最大幅は 49 バイトになります。

> Apache 1.3.10 から、DescriptionWidth `IndexOptions` キーワードを使うことで、この幅を 任意の大きさに調整することができます。

警告:

`AddDescription` で定義された説明テキストは、タグや文字列といった HTML マークアップを含むことができます。 もし、説明コラムの幅によってタグ付けされた要素が丸め込まれた (太字の語句の最後が切れるといった) 場合、 出力結果は、ディレクトリ一覧の残りの部分に影響を与えるでしょう。

## AddIcon ディレクティブ

構文: AddIcon icon name [name] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

FancyIndexing において、 name で終わるファイルの隣に表示するアイコンを設定します。 icon は、(% でエスケープされた) アイコンへの相対 URL か、他の書式 (alttext, url) です。 ここで alttext は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。

name は、ディレクトリに対応する ^^DIRECTORY^^ か、空白行に対応する ^^BLANKICON^^ (一覧が正しく表示されるために) か、 ファイル拡張子か、ワイルドカード表現か、ファイル名の一部か 完全なファイル名です。例:

> `AddIcon (IMG,/icons/image2.gif) .gif .jpg .png
> AddIcon /icons/dir.gif ^^DIRECTORY^^
> AddIcon /icons/backup.gif *~`

もし可能なら、AddIcon より AddIconByType を優先的に使うべきでしょう。

## AddIconByEncoding ディレクティブ

構文: AddIconByEncoding icon MIME-encoding [MIME-encoding] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

FancyIndexing において、MIME-encoding のファイルの隣に表示するアイコンを設定します。 icon は、(% でエスケープされた) アイコンへの相対 URL か、他の書式 (alttext, url) です。 ここで alttext は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。

MIME-encoding は、要求されたエンコードに該当する ワイルドカード表現です。例:

> `AddIconByEncoding /icons/compressed.gif x-compress`

## AddIconByType ディレクティブ

構文: AddIconByType icon MIME-type [MIME-type] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

FancyIndexing において、ファイルの隣に表示するアイコンを設定します。 icon は、(% でエスケープされた) アイコンへの相対 URL か、他の書式 (alttext, url) です。 ここで alttext は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。

MIME-type は、要求されたタイプに該当する ワイルドカード表現です。例:

> `AddIconByType (IMG,/icons/image3.gif) image/*`

## DefaultIcon ディレクティブ

構文: DefaultIcon url
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

DefaultIcon ディレクティブは FancyIndexing において、 特定のアイコンがない場合のファイルに表示するアイコンを設定します。 url は、(% でエスケープされた) アイコンへの相対 URL です。例:

> `DefaultIcon /icon/unknown.xbm`

## FancyIndexing ディレクティブ

構文: FancyIndexing on|off
コンテキスト: サーバ設定ファイル、バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

FancyIndexing ディレクティブはディレクトリの FancyIndexing オプションを設定します。The IndexOptions directive should be used in preference.

> 1.3.2 以前のバージョンの Apache では、 `FancyIndexing` 及び `IndexOptions` ディレクティブは互いに上書きしてしていたことに注意してください。 単独の `FancyIndexing` ディレクティブよりも `IndexOptions FancyIndexing` を使うべきです。 Apache 1.3.2 では単独 `FancyIndexing` ディレクティブは現在の範囲に対して既に指定された `IndexOptions` ディレクティブと組み合わされます。

## HeaderName ディレクティブ

構文: HeaderName filename
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex
互換性: いくつかの機能は 1.3.6 以降でのみ使用可能

HeaderName ディレクティブは、 インデックス一覧の先頭に挿入するファイルの名前を設定します。 Filename は取り込むファイルの名前です。

Filename はインデックスされているディレクトリに用いられた URI に対する相対 URI パスとして扱われます。 これは、filename がスラッシュで始まる場合は、 DocumentRoot からの相対パスとなるということです。

Filename はメジャーコンテントタイプが "`text`" (例えば、`text/html`, `text/plain` 等です。) のドキュメントとして解決されなければなりません。これはつまり、 もし CGI スクリプトの実際のファイルタイプが 次のディレクティブのようにして実際の出力とは異なって `text/html` としてマークされている場合、 filename は CGI スクリプトを参照するかも知れない、 ということを意味します:

        AddType text/html .cgi

`MultiViews` option が有効になっている場合は、 コンテントネゴシエーション が行なわれます。 もし filename が (CGI スクリプトでない) 静的な `text/html` ドキュメントで解決され、 `Includes` option が有効になっている場合は、 ファイルはサーバサイドインクルードで処理されます (`mod_include` ドキュメントを参照して下さい)。

もし `HeaderName` で指定されたファイルが HTML ドキュメントの開始部分 (<HTML>, <HEAD>, 等) を含んでいたら、 `IndexOptions +SuppressHTMLPreamble` を設定して、これらのタグが繰り返されないようにしたいと思うでしょう。

> Apache 1.3.6 以前: モジュールは最初に filename`.html` を HTML 文書として include を試みます。それから filename をプレーンテキストとして include しようとします。Filename はインデクスされる ディレクトリからのファイルシステムの相対パスとして扱われます。 SSI 処理は絶対に行なわれません。例:

> > `HeaderName HEADER`

> ディレクトリ `/web` がインデクスされるとき、サーバは最初に `/web/HEADER.html` という HTML ファイルを探し見つかればそれを include します。それから `/web/HEADER` というプレーンテキストのファイルを、 存在すれば include します。

参照 ReadmeName。

## IndexIgnore ディレクティブ

構文: IndexIgnore file [file] ...
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex

IndexIgnore ディレクティブは、 ディレクトリの一覧を行なう際に無視すべきファイルリストに追加します。 file は、無視するファイル名のファイル拡張子か、ファイル名の一部か、 ワイルドカード表現か完全なファイル名です。 IndexIgnore が複数ある場合は、無視するリストに追加が行なわれ、 置換は行なわれません。デフォルトではリストには ``.`' が含まれています。例:

> `IndexIgnore README .htaccess *~`

## IndexOptions ディレクティブ

構文: IndexOptions option [option] ... (Apache 1.3.2 以前)
構文: IndexOptions [+|-]option [[+|-]option] ... (Apache 1.3.3 以降)
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex
互換性: '+/-' 構文と 複数の `IndexOptions` ディレクティブのマージは Apache 1.3.3 以降でのみ使用可能。`FoldersFirst` と `DescriptionWidth` オプションは Apache 1.3.10 以降でのみ 使用可能。`TrackModified` オプションは Apache 1.3.15 以降 でのみ使用可能。`IgnoreCase` オプションは Apache 1.3.24 以降でのみ使用可能

IndexOptions は、ディレクトリインデックスの挙動を指定します。 option は次のどれかです:

DescriptionWidth=[n | *] (Apache 1.3.10 以降)
  `DescriptionWidth` キーワードは説明コラムの幅を文字数で指定することができます。 キーワードの値が '`*`' の場合のコラムの幅は、 表示される中で最も長いファイル名の長さに自動的に合わされます。 説明が丸め込まれた場合に起こりうる危険については AddDescription セクションをお読み下さい。
FancyIndexing
  飾り付きインデックスをオンにします。

  > 1.3.2 以前のバージョンの Apache では、 `FancyIndexing` 及び `IndexOptions` ディレクティブは互いに上書きしてしていたことに注意してください。 単独の `FancyIndexing` ディレクティブよりも `IndexOptions FancyIndexing` を使うべきです。 Apache 1.3.2 では単独 `FancyIndexing` ディレクティブは現在の範囲に対して既に指定された `IndexOptions` ディレクティブと組み合わされます。

FoldersFirst (Apache 1.3.10 以降)
  このオプションが有効になると FancyIndex されたリストは常にサブディレクトリが最初に、 続いて通常のファイルが表示されます。 リストは基本的に二つの部分、ファイルとサブディレクトリに分けられ、 それぞれが別々にソートされてまずサブディレクトリから表示されます。 たとえば、ソートが名前の降順で `FoldersFirst` が有効であれば、サブディレクトリ `Zed` がサブディレクトリ `Beta` より前に、またこれらは 通常のファイル `Gamma` や `Alpha` より前に表示されます。このオプションは `FancyIndexing` も有効である場合に限り効果があります。
IconHeight[=pixels] (Apache 1.3 以降)
  このオプションが、IconWidth とともに使われている場合は、 サーバはファイルアイコンのための `img` タグに `height` と `width` 属性を取り込むようになります。 これによって、イメージ全てをロードし終わるまで待たなくても、 ブラウザはページレイアウトをあらかじめ計算することができます。 このオプションに何も値が与えられなければ、Apache ソフトウェアで提供されているアイコンの標準の高さが デフォルトとなります。
IconsAreLinks
  これは、FancyIndexing において、 アイコンもファイル名へのリンクの一部にします。
IconWidth[=pixels] (Apache 1.3 以降)
  このオプションが、IconHeight とともに使われている場合は、 サーバはファイルアイコンのための `IMG` タグに `HEIGHT` と `WIDTH` 属性を取り込むようになります。 これによって、イメージ全てをロードし終わるまで待たなくても、 ブラウザはページレイアウトをあらかじめ計算することができます。 このオプションに何も値が与えられなければ、Apache ソフトウェアで提供されているアイコンの標準の高さが デフォルトとなります。
IgnoreCase (Apache 1.3.24 以降)
  このオプションが有効であると、 ファイル名は大文字小文字を区別せずにソートされます。 例えばファイル名が昇順でソートされ、`IgnoreCase` が有効であれば、`Zeta` は `alfa` の後にリストされます(注意: `GAMMA` は常に `gamma` の前になります)。このオプションは `FancyIndexing` も有効である場合に限り効果があります。
NameWidth=[n | *] (Apache 1.3.2 以降)
  `NameWidth` キーワードでファイル名コラムの幅をバイト数で 指定できます。キーワードの値が '`*`' の場合のコラムの幅は、 表示される中で最も長いファイル名の長さに自動的に合わされます。
ScanHTMLTitles
  FancyIndexing のために、 HTML ドキュメントからタイトルを取り出すことを可能にします。 もしファイルに AddDescription で説明が与えられていなければ、 httpd は TITLE タグの値を読むためにドキュメントを読み始めます。 これは CPU や disk に負荷をかけます。
SuppressColumnSorting
  もし指定されていれば、Apache は FancyIndexing で表示されているディレクトリ一覧でのコラムの見出しを、 ソートのためのリンクにしなくなります。 デフォルトの挙動は、リンクとします。 コラムの見出しを選ぶとコラムの値に従ってディレクトリリストを ソートします。Apache 1.3 以降でのみ使用可能。
SuppressDescription
  これは FancyIndexing におけるファイルの説明を消去します。 デフォルトでは、説明は定義されておらず、 このオプションを使うと他のために 23 文字の空白を稼ぐことができます。 ファイルの説明に関する情報は、 `AddDescription` をご覧下さい。また、説明のコラムサイズを制限する `DescriptionWidth` インデックスオプションもご覧下さい。
SuppressHTMLPreamble (Apache 1.3 以降)
  通常、 HeaderName ディレクティブで指定したファイルを ディレクトリが実際に含んでいれば、標準的な HTML プリアンブル (<HTML>, <HEAD> 等) の後に、 モジュールはファイルの中身をインクルードします。 SuppressHTMLPreamble オプションはこの挙動を無効にし、 モジュールがヘッダファイルの中身から表示を始めます。 この場合、ヘッダファイルは正しい HTML 命令を含んでいなければなりません。 ヘッダファイルが存在しない場合は、プリアンブルは通常通り 生成されます。
SuppressLastModified
  FancyIndexing 一覧において最終更新日時の表示を消去します。
SuppressSize
  FancyIndexing 一覧においてファイルサイズの表示を消去します。
TrackModified (Apache 1.3.15 以降)
  これは HTTP ヘッダ中に、 リストされたディレクトリの最終更新日や ETag 値を含めます。 これは、オペレーティングシステムやファイルシステムが 適切な stat() の返り値を返す場合にのみ有効です。 たいていの UNIX システム、OS2 の JFS や Win32 の NTFS ボリュームはそうなっています。 例えば、OS2 と Win32 FAT ボリュームはそうではありません。 この機能が有効になると、クライアントやプロキシは HEAD リクエストを行なうことによって、 ファイル一覧の変化を追跡することができるようになります。 いくつかのオペレーティングシステムは、新規ファイルや 移動ファイルは正しく追跡するけれども、 ディレクトリ中のファイルのサイズや日付は追跡しないということに 注意してください。

最近の (1.3.0 より後の) バージョンの Apache はこのディレクティブの挙動に重要な違いがあります。

Apache 1.3.2 以前:

  デフォルトではどのオプションも有効ではありません。複数の IndexOptions を適用することができ、もっとも詳細なものが採用されます; options はマージされません。 例:

  >     <Directory /web/docs>
  >         IndexOptions FancyIndexing
  >     </Directory>
  >     <Directory /web/docs/spec>
  >         IndexOptions ScanHTMLTitles
  >     </Directory>

  /web/docs/spec に対して `ScanHTMLTitles` だけが設定されます。
Apache 1.3.3 以降:

  Apache 1.3.3 introduced some significant changes in the handling of `IndexOptions` directives. In particular,

  - 単一のディレクトリに対する複数の `IndexOptions` ディレクティブは現在では互いにマージされます。 上の例の結果は現在は `IndexOptions FancyIndexing ScanHTMLTitles` と同等になります。
  - 増減構文 (すなわち、'+' または '-' が頭につくキーワード)

  '+' または '-' が頭につくキーワードを見つけると、現在の `IndexOptions` の設定(上位ディレクトリから引き継いでいることもあります) に対して適用します。しかし、頭につかないキーワードが処理されると それまでに引き継いだ options や増減の設定をクリアしてしまいます。 以下の例を考えてください:

  > `IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing
  > IndexOptions +SuppressSize
  > `

  正味の結果は `IndexOptions FancyIndexing +SuppressSize` と同等になります。頭に付かない `FancyIndexing` はそれ以前の増減キーワードを無効にしますが、 その後から再び設定を追加していくことができます。

  あるディレクトリに対して、無条件に `IndexOptions` を設定するにはキーワードの頭に '+' 及び '-' のどちらもつけないことにより引き継がれた設定をクリアします。

## IndexOrderDefault ディレクティブ

構文: IndexOrderDefault Ascending|Descending Name|Date|Size|Description
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex
互換性: IndexOrderDefault は Apache 1.3.4 以降でのみ使用可能。

`IndexOrderDefault` ディレクティブは `FancyIndexing` インデックスオプションと併せて用いれます。 デフォルトでは、FancyIndexing のディレクトリ一覧はファイル名の昇順で表示されます。 `IndexOrderDefault` で、初期状態の表示順番を変えることができます。

`IndexOrderDefault` は二つの引数をとります。一つ目はソートの方向を指示する `Ascending` か `Descending` のいずれかです。 二つ目の引数は `Name`, `Date`, `Size` か `Description` のいずれか一つのキーワードであって、プライマリキーを指定します。 二つ目のキーは常にファイル名の昇順になります。

このディレクティブと `SuppressColumnSorting` インデックスオプションとを組み合わせることで、 ディレクトリ一覧をある特定の順番でのみ表示するようにできます。 これは、 クライアントが別の順番でディレクトリ一覧をリクエストすることを防ぎます。

## ReadmeName ディレクティブ

構文: ReadmeName filename
コンテキスト: サーバ設定ファイル、 バーチャルホスト、ディレクトリ、.htaccess
上書き: Indexes
ステータス: Base
モジュール: mod_autoindex
互換性: いくつかの機能は 1.3.6 以降でのみ 使用可能

ReadmeName ディレクティブは、 インデックスの終わりに付け加えられるファイルの名前を設定します。 `filename` は挿入するファイルの名前で、 一覧の行なわれている位置から相対的なものとして解釈されます。

> filename 引数は Apache 1.3.6 以前ではファイル名の一部、 後のバージョンでは相対 URI として扱われます。 これがどのように処理されるのかということについての詳細は HeaderName ディレクティブの説明に見つけられます。 これは同じ機構を使い、ReadmeNameと同時に変更することができます。

参照 HeaderName

### Apache HTTP Server Version 1.3