mod_autoindex
Unix の `ls` コマンドや Win32 の `dir` シェルコマンドに似た ディレクトリインデックスを生成する
Base
mod_autoindex.c
autoindex_module

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

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

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

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

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

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

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

Apache 2.0.23 で、 コラムソートのためにクエリー引数を再編成して、 新しいクエリーオプションのグループを導入しました。 出力に対するクライアントのすべての制御を効率的に抹消 できるように、 `IndexOptions IgnoreClient` が導入されました。

コラムソートのヘッダそれ自体が、 下記のソートクエリーオプションを付加する 自分自身を参照するリンクです。 下記のオプションのどれでも、 ディレクトリリソースへのリクエストに加えることができます。

- `C=N` は、ファイル名でソートします。
- `C=M` は、更新日時、 ディレクトリ、ファイル名の順でソートします。
- `C=S` は、サイズ、 ディレクトリ、ファイル名の順でソートします。
- `C=D` は、説明、 ディレクトリ、ファイル名の順でソートします。
- `O=A` は、昇順で表をソートします。
- `O=D` は、降順で表をソートします。
- `F=0` は、単純な表の書式にします。 (FancyIndex ではありません。)
- `F=1` は、FancyIndex 表示の表の書式にします。
- `F=2` は、表を HTML のテーブルを使った FancyIndex の書式にします。
- `V=0` は、バージョンによるソートを無効にします。
- `V=1` は、バージョンによるソートを有効にします。
- `P=pattern` は、与えられた pattern に適合したファイルのみを表示します。

"P (パターンの P)" クエリー引数は、 通常の IndexIgnore ディレクティブが処理された後に検査され、 ファイル名全てが、他の autoindex リスト処理と同様の判定基準下に置かれ続ける ことに注意してください。 mod_autoindex のクエリー引数パーサ (解析) は、 認識不能なオプションにぶつかると即座に停止します。 クエリー引数は上の表に従って 正しい形式になっていなければなりません。

下の単純な例は、これらのクエリーオプションを 表します。これをそのまま切り取って HEADER.html ファイルに保存することもできます。 mod_autoindex が X=Go 入力にぶつかる前に 引数が全て解釈されるように、 未知の引数 "X" はリストの最後に置かれています。

<form action="" method="get">
Show me a <select name="F">
<option value="0"> Plain list</option>
<option value="1" selected="selected"> Fancy list</option>
<option value="2"> Table list</option>
</select>
Sorted by <select name="C">
<option value="N" selected="selected"> Name</option>
<option value="M"> Date Modified</option>
<option value="S"> Size</option>
<option value="D"> Description</option>
</select>
<select name="O">
<option value="A" selected="selected"> Ascending</option>
<option value="D"> Descending</option>
</select>
<select name="V">
<option value="0" selected="selected"> in Normal order</option>
<option value="1"> in Version order</option>
</select>
Matching <input type="text" name="P" value="*" />
<input type="submit" name="X" value="Go" />
</form>
AddAlt
アイコンの代わりに 表示される、ファイル名で選択された代替テキスト
AddAlt string file [file] ...
server config
virtual host
directory
.htaccess
Indexes

AddAlt は、`FancyIndexing` において、アイコンの代わりに表示する代替テキストを提供します。 file は、説明するファイルのファイル拡張子、 ファイル名の一部、ワイルドカード表現、完全なファイル名の どれかになります。 string に空白がある場合は引用符 (`"` か `'`) で囲む必要があります。 この文字列は、クライアントが画像を表示できない場合や 画像のロードを無効にしている場合や アイコンの取得に失敗したときに表示されます。

# 例

AddAlt "PDF file" *.pdf
AddAlt Compressed *.gz *.zip *.Z
AddAltByEncoding
アイコンの代わりに表示される、MIME 符号化方法で選択された 代替テキスト
AddAltByEncoding string MIME-encoding [MIME-encoding] ...
server config
virtual host
directory
.htaccess
Indexes

AddAltByEncoding は、 `FancyIndexing` において、アイコンの代わりに表示する代替文字列を提供します。 MIME-encoding は有効な符号化、例えば `x-compress` です。 string に空白があるときは、引用符 (`"` か `'`) で囲む必要があります。 この文字列は、クライアントが画像を表示できない場合や 画像のロードを無効にしている場合や アイコンの取得に失敗したときに表示されます。

# 例

AddAltByEncoding gzip x-gzip
AddAltByType
アイコンの代わりに 表示される、MIME タイプで選択された代替テキスト
AddAltByType string MIME-type [MIME-type] ...
server config
virtual host
directory
.htaccess
Indexes

AddAltByType は、 `FancyIndexing` において、アイコンの代わりに表示する代替文字列を設定します。 MIME-type は有効なタイプ、例えば `text/html` です。 string に空白があるときは、引用符 (`"` か `'`) で囲む必要があります。 この文字列は、クライアントが画像を表示できない場合や 画像のロードを無効にしている場合や アイコンの取得に失敗したときに表示されます。

# 例

AddAltByType 'plain text' text/plain
AddDescription
ファイルに対して表示する説明
AddDescription string file [file] ...
server config
virtual host
directory
.htaccess
Indexes

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

# 例

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

通常のデフォルトの説明領域は 23 バイトの幅です。 `IndexOptions SuppressIcon` オプションで 6 バイト追加、 `IndexOptions SuppressSize` オプションで 7 バイト追加、 `IndexOptions SuppressLastModified` オプションで 19 バイト追加されます。 ですから、デフォルトの説明コラムの最大幅は 55 バイトになります。

このコラムの大きさを上書きしたり、 説明が無制限長でもよいようにするための詳細に関しては、 DescriptionWidth という IndexOptions のキーワードをご覧下さい。

# 警告

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

AddIcon
ファイルに表示するアイコンを名前で選択
AddIcon icon name [name] ...
server config
virtual host
directory
.htaccess
Indexes

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

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

# 例

AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm
AddIcon /icons/dir.xbm ^^DIRECTORY^^
AddIcon /icons/backup.xbm *~

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

AddIconByEncoding
ファイルに表示するアイコンを MIME 符号化方法で選択
AddIconByEncoding icon MIME-encoding [MIME-encoding] ...
server config
virtual host
directory
.htaccess
Indexes

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

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

# 例

AddIconByEncoding /icons/compress.xbm x-compress
AddIconByType
ファイルの隣に表示するアイコンを MIME タイプによって選択
AddIconByType icon MIME-type [MIME-type] ...
server config
virtual host
directory
.htaccess
Indexes

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

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

# 例

AddIconByType (IMG,/icons/image.xbm) image/*
DefaultIcon
特定のアイコンが何も設定されていない時に ファイルに表示するアイコン
DefaultIcon url-path
server config
virtual host
directory
.htaccess
Indexes

`FancyIndexing` において、 特定のアイコンがない場合にファイルに表示するアイコンを設定します。 url-path は、(% でエスケープされた) アイコンへの相対 URL です。

# 例

DefaultIcon /icon/unknown.xbm
HeaderName
インデックス一覧の先頭に挿入されるファイルの名前
HeaderName filename
server config
virtual host
directory
.htaccess
Indexes

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

# 例

HeaderName HEADER.html

HeaderName も ReadmeName も両方とも現在は、filename をインデックスされているディレクトリに用いられた URI に対する相対 URI パスとして扱います。 filename がスラッシュで始まる場合は、 DocumentRoot からの相対パスとなります。

# 例

HeaderName /include/HEADER.html

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

AddType text/html .cgi

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

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

IndexIgnore
ディレクトリ一覧を行なう際に無視すべき ファイルリストに追加
IndexIgnore file [file] ...
server config
virtual host
directory
.htaccess
Indexes

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

IndexIgnore README .htaccess *~
IndexOptions
ディレクトリインデックスの様々な設定項目
IndexOptions [+|-]option [[+|-]option] ...
server config
virtual host
directory
.htaccess
Indexes

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

DescriptionWidth=[n | *] (2.0.23 以降)
  `DescriptionWidth` キーワードは説明コラムの幅を文字数で指定することができます。
  `-DescriptionWidth` (または非設定) で、 mod_autoindex が最適な幅を計算するようにできます。
  `DescriptionWidth=n` で、コラム幅を n バイトに固定します。
  `DescriptionWidth=*` は、最長の説明に合わせて必要な長さまでコラムを延ばします。
  説明を丸め込んだ場合特有の危険については AddDescription セクションをお読み下さい。
FancyIndexing
  飾り付きインデックスをオンにします。
FoldersFirst (2.0.23 以降)
  このオプションが有効になった場合、サブディレクトリの一覧は 必ず最初に現われて、そのディレクトリの通常のファイルは その後に続きます。 一覧は基本的には、ファイルとディレクトリの二つの部分に分けられて、 それぞれは別々にソートされ、その後サブディレクトリを先にして 表示が行われます。例えばソート順が名前の降順になっていて、 `FoldersFirst` が有効になっている場合は、 サブディレクトリ `Zed` はサブディレクトリ `Beta` よりも前にリストされ、通常のファイル `Gamma` や `Alpha` よりも前にリストされます。このオプションは `FancyIndexing` も有効になっているときにのみ、効果があります。
HTMLTable (実験的、 Apache 2.0.23 以降)
  この実験的なオプションは FancyIndexing とともに指定することで、 飾りの付いたディレクトリ一覧のためにテーブルを使った単純な表を作ります。 これは古いブラウザを混乱させるかもしれないことに注意してください。 WinNT やその他 utf-8 が有効なプラットホームのように、ファイル名や説明テキストが 右読みになったり左読みになりえる場合は特に必要です。
IconsAreLinks
  これは、FancyIndexing において、 アイコンもファイル名へのリンクの一部にします。
IconHeight[=pixels]
  このオプションが、IconWidth とともに使われている場合は、 サーバはファイルアイコンのための `img` タグに `height` と `width` 属性を取り込むようになります。 これによって、イメージ全てをロードし終わるまで待たなくても、 ブラウザはページレイアウトをあらかじめ計算することができます。 このオプションに何も値が与えられなければ、Apache ソフトウェアで提供されているアイコンの標準の高さが デフォルトなります。
IconWidth[=pixels]
  このオプションが、IconHeightとともに使われている場合は、 サーバはファイルアイコンのための `img` タグに `height` と `width` 属性を取り込むようになります。 これによって、イメージ全てをロードし終わるまで待たなくても、 ブラウザはページレイアウトをあらかじめ計算することができます。 このオプションに何も値が与えられなければ、Apache ソフトウェアで提供されているアイコンの標準の高さが デフォルトなります。
IgnoreClient
  このオプションで mod_autoindex は、 クライアントからの全てのクエリー変数を無視するようになります。 これはソート順も含みます。 (つまり `SuppressColumnSorting` を暗に意味します。)
NameWidth=[n | *]
  `NameWidth` キーワードでファイル名コラムの幅をバイト数で 指定できます。
  `-NameWidth` (または非設定) で、 mod_autoindex が最適な幅を計算するようにできます。
  `NameWidth=n` で、コラム幅を n バイトに固定します。
  `NameWidth=*` は、必要な長さまでコラムを延ばします。
ScanHTMLTitles
  FancyIndexing のために、 HTML ドキュメントからタイトルを取り出すことを可能にします。 もしファイルに AddDescription で説明が与えられていなければ、 httpd は `title` タグの値を読むためにドキュメントを読み始めます。 これは CPU や disk に負荷をかけます。
SuppressColumnSorting
  もし指定されていれば、Apache は FancyIndexing で表示されているディレクトリ一覧での コラムの先頭を、ソートのためのリンクにしなくなります。 デフォルトの挙動は、リンクとします。 コラムの先頭を選ぶとコラムの値に従ってディレクトリリストを ソートします。 Apache 2.0.23 以前では、これは同時に ソート文字列のためのクエリー引数の解析も無効にします。 この挙動は Apache 2.0.23 では IndexOptions IgnoreClient で制御されるようになっています。
SuppressDescription
  これは FancyIndexing におけるファイルの説明を消去します。 デフォルトでは、説明は定義されておらず、 このオプションを使うと他のために 23 文字の空白を稼ぐことができます。 ファイルの説明に関する情報は、 AddDescription をご覧下さい。また、説明のコラムサイズを制限する `DescriptionWidth` インデックスオプションもご覧下さい。
SuppressHTMLPreamble
  通常、 HeaderName ディレクティブで指定したファイルを ディレクトリが実際に含んでいれば、標準的な HTML プリアンブル (`<html>`, `<head>`, 等) の後に、 モジュールはファイルの中身をインクルードします。 `SuppressHTMLPreamble` オプションは、 この挙動を無効にできて、 モジュールがヘッダーファイルの中身から表示を始めます。 この場合、ヘッダーファイルは正しい HTML 命令を含んでいなければなりません。 ヘッダーファイルが存在しない場合は、プリアンブルは通常通り 生成されます。
SuppressIcon (Apache 2.0.23 以降)
  これは FancyIndexing の一覧からアイコンを消去します。 `SuppressIcon` と `SuppressRules` と組合わせることによって正しい HTML 3.2 の出力が得られます。 正しい HTML 3.2 出力は、最終規格において `img` と `hr` が `pre` ブロックに入る (FancyIndexing 一覧で書式に使われています) ことを禁止しています。
SuppressLastModified
  FancyIndexing 一覧において最終更新日時の表示を消去します。
SuppressRules (Apache 2.0.23 以降)
  ディレクトリ一覧において水平区切り線 (`hr` タグ) を消去します。 `SuppressIcon` と `SuppressRules` と組合わせることによって正しい HTML 3.2 の出力が得られます。 正しい HTML 3.2 出力は、最終規格において `img` と `hr` が `pre` ブロックに入る (FancyIndexing 一覧で書式に使われています) ことを禁止しています。
SuppressSize
  FancyIndexing 一覧においてファイルサイズの表示を消去します。
TrackModified (Apache 2.0.23 以降)
  これは HTTP ヘッダ中に、 リストされたディレクトリの最終更新日や ETag 値を含めます。 これは、オペレーティングシステムやファイルシステムが 適切な stat() の返り値を返す場合にのみ有効です。 いくつかの UNIX システム、OS2 の JFS や Win32 の NTFS ボリュームはそうなっています。 例えば、OS2 と Win32 FAT ボリュームはそうではありません。 この機能が有効になると、クライアントやプロキシは `HEAD` リクエストを行うことによって、 ファイル一覧の変化を追跡することができるようになります。 いくつかのオペレーティングシステムは、新規ファイルや 移動ファイルは正しく追跡するけれども、 ディレクトリ中のファイルのサイズや日付は追跡ないということに 注意してください。 既に存在するファイルのサイズや日付のスタンプが変化しても、 全ての Unix プラットホームでは、 最終更新日ヘッダーを更新しません。 もしこれが重要であれば、 このオプションを無効のままにしてください。
VersionSort (Apache 2.0a3 以降)
  `VersionSort` キーワードはバージョン番号を含んだファイルが 自然な方法でソートされるようにします。 文字列は通常通りソートされ、 それ以外の、説明や名前中の数となる部分文字列は その数値で比較されます。

  # 例:

  foo-1.7
  foo-1.7.2
  foo-1.7.12
  foo-1.8.2
  foo-1.8.2a
  foo-1.12

  番号が 0 から始まる場合は、端数と考えられます

  foo-1.001
  foo-1.002
  foo-1.030
  foo-1.04

増減指定できる IndexOptions

  Apache 1.3.3 では、 IndexOptions ディレクティブの扱いで幾つかの大きな変化が導入されました。 特に、

  - 一つのディレクトリに対する複数の IndexOptions ディレクティブは、現在では一つにマージされます。 上の例の結果は、

    <Directory /foo> IndexOptions HTMLTable
    IndexOptions SuppressColumnsorting </Directory>

    と同一になります。

    IndexOptions HTMLTable SuppressColumnsorting
  - 増減構文 (すなわち、'+' や '-' の接頭辞が付くキーワード) の追加。

  '+' や '-' 接頭辞の付いたキーワードに出会うとそれは、 その時点での IndexOptions の設定 (これは上流のディレクトリを受け継ぎます) に対して適応されます。 しかしながら、接頭辞の付かないキーワードが処理された場合は、 受け継いだオプション全てとそれまで出会った増減設定全てが 消去されます。次の例を考えてみてください:

  IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing
  IndexOptions +SuppressSize

  中身の効果は `IndexOptions FancyIndexing +SuppressSize` と同一です。 接頭辞の付かない `FancyIndexing` でそれ以前の増減キーワードを無効にされて、 その後の累積が始まるからです。

  無条件に IndexOptions をあるディレクトリで設定することによって 継承した設定を消去して、`+` や `-` 接頭辞の付かないキーワードで設定してください。

IndexOrderDefault
ディレクトリインデックスの標準の順番付けを設定
IndexOrderDefault Ascending|Descending Name|Date|Size|Description
IndexOrderDefault Ascending Name
server config
virtual host
directory
.htaccess
Indexes

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

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

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

ReadmeName
インデックス一覧の最後に挿入されるファイルの名前
ReadmeName filename
server config
virtual host
directory
.htaccess
Indexes

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

# 例

ReadmeName FOOTER.html

# 例 2

ReadmeName /include/FOOTER.html

より詳細にまでこの挙動について記述している HeaderName もご覧下さい。