[ホーム] -> [Aache + PHP + PostgreSQL 実験室]

コンテンツに関する項目

Apache が扱うファイルや、CGI などのプログラムに関する設定を行う項目です。ファイルの拡張子に対して、どのような処理を行うかなどの設定が多いですね。

目次

説明

DocumentRoot path

サーバが公開する、ルートとなるディレクトリを指定します。最後にスラッシュ「/」は付けないようにしましょう。

Options [+|-]option[ [+|-]option] ...

option には、All, ExecCGI, FollowSymLinks, Includes, IncludesNOEXEC, Indexes, MultiViews, SymLinksIfOwnerMatch を指定できます。各値の前に、プラス「+」かマイナス「-」を指定でき、それぞれの機能を有効(+)か無効(-)にできます。それぞれの値の意味ですが、ExecCGI が CGI の実行の許可、FollowSymLinks がシンボリックリンクファイルを有効にする、Includes が SSI の許可、IncludesNOEXEC#exec, #include を除いた SSI の許可、Indexes がインデックスファイルが無い場合にファイルリストの表示、MultiViews がインデックスファイルがない場合にコンテンツネゴシエーション(後で別途説明)を有効に、SymLinksIfOwnerMatch は、シンボリックリンクファイルのあるディレクトリと、リンク先が同じユーザの時のみシンボリックリンクファイルを有効にするかを意味します。最後に、All を指定すると MultiViews を除いたすすべてが対象になります。

AllowOverride type[ type] ...

type には、AuthConfig, FileInfo, Indexes, Limit, Options, All, None を指定できます。ここで指定するのは、.htaccess ファイルで上書きできるディレクティブの種類です。

それぞれ、AuthConfigAuth*, Require などの認証を指定するディレクティブ、FileInfoAddEncoding, AddType, ErrorDucument などのドキュメントタイプをコントロールするディレクティブ、Indexes はファイル一覧の表示をコントロールするディレクティブ、LimitAllow, Deny, OrderOptionsOptions, XBitHack の設定を上書きできるようにします。All を設定した場合はすべての設定を上書きできるようになり、None を指定した場合は上書きできなくなります。

UserDir path
(mod_userdir)

ユーザ毎の公開するディレクトリを指定します。UserDir public_html と指定したら、http://www.domain.com/~dareka/ というアクセスに対して、~dareka/を見に行きます。UserDir /usr/web と指定したら /usr/web/dareka を、UserDir /data/*/www を指定したら /data/dareka/www を見に行きます。

このディレクティブはいくつも書くことが出来ます。パス以外でも、UserDir disabled というキーワードを指定すると、すべてのユーザのユーザ名-ディレクトリ変換を無効にします。UserDir disable dareka と指定すると、dareka さんだけ無効にします。あるいは、UserDir ore omae dareka disabled として複数のユーザを一度に無効にすることも出来ます。特定の人だけを許可したい場合は、UserDir disabled として無効にした後、UserDir ore omae enabled として一部の人のみ許可することも出来ます。

DirectoryIndex url[ url] ...
(mod_dir)

クライアントからのリクエストがスラッシュ「/」で終わっていた場合、そのディレクトリの中からどのファイルを表示させるかを指定します。スペースで区切って、一つ以上指定することが出来ます。複数指定した場合、最初に指定したものからファイルがあるか調べ、最初に見つかったファイルをクライアントに返します。ファイルを指定するだけだと思われがちですが、/cgi-bin/list.pl などとすることも出来ます。ローカルファイルシステムのパスではなく、URL なのに注意してください。

TypesConfig path
(mod_mime)

MIME タイプの書かれたファイルのパスを指定します。このファイルは、「mime-type[ extension extension]] ...」となっています。行頭が # で始まる行は無視されます。

MIMEMagicFile path
(mod_mime_magic)

ファイルタイプを調べる定義ファイルへのパスを指定します。この定義に従い、ファイルの中のデータを元に、ファイルの MIME タイプを判別します。ファイル内部に決まったデータがあれば、バイナリファイルでも判別できます(画像ファイルや音楽のファイル、圧縮ファイルとか)。このファイルの判別は、TypesConfig では判別できないファイルに対して行われます。ファイルフォーマットが違うにも関わらず、同じ拡張子を使っているようなファイルや、ファイルの中身に対して拡張子が信用できないような場合に効果があります。

AddType mime-type extension[ extension] ...
(mod_mime)

extension は拡張子です。TypesConfig などのファイルで定義されていないファイルを指定するときに使います。.htaccess で指定できるので、TypesConfig が編集できない人は、こちらを使います。

DefaultType mime-type

MIME タイプが判別できなかったときに利用される MIME タイプです。

Alias url path
(mod_alias)

クライアントから指定された url を、path にマッピングします。例えば「Alias /icons/ /usr/local/apache/icons/」と指定されると、http://www.domain.com/icons/abc.gif というアクセスに対して、/usr/local/apache/icons/abc.gif のデータが返されます。この指定をすると、DocumentRoot などの設定に関係なく、別のディレクトリを指定することが出来るようになります。

ScriptAlias url path
(mod_alias)

上と同じように URL とパスをマッピングしますが、こちらは CGI スクリプトを含むディレクトリを指定します。これで指定したディレクトリの中に CGI があった場合は、実行できるようになります。

IndexOptions option[ option] ...
(mod_autoindex)

Options +Indexes が設定されている場合に、ディレクトリを指定されたときに表示するファイル一覧をカスタマイズします。かなり豊富なオプションがあるので、ここでは説明を省きます。マニュアルを見てください。機能としては、ファイル毎に表示するアイコンの大きさだとか、HTML ファイルがあった場合、<title> タグの値を表示するとか、ソートする列の指定だとか、ファイルのサイズを表示しないようにしたりとか出来ます。

AddIcon icon-url extension[ extension] ...
(mod_autoindex)

ファイル一覧の、ファイル名の頭に表示する画像ファイルを、拡張子ごとに指定できます。拡張子の代わりに「^^DIRECTORY^^」と指定するとディレクトリが対象になります。また、拡張子ではなく、ワイルドカードも利用できます。

AddIconByType icon-url mime-type[ mime-type] ...
(mod_autoindex)

AddIcon と似てますが、こちらは拡張子ではなく MIME タイプを指定します。

AddIconByEncoding icon-url mime-encoding[ mime-encoding] ...
(mod_autoindex)

AddIcon と似てますが、こちらは拡張子ではなくエンコーディング形式(AddEncoding で指定するやつ)を指定します。

DefaultIcon icon-url
(mod_autoindex)

AddIcon* による指定のいずれにも当てはまらなかった場合に、このアイコンが利用されます。

AddDescription string url[ url] ...
(mod_autoindex)

これもファイル一覧で効果があります。指定したファイルの右側に説明文字列が表示されるようになります。

HeaderName file-name
(mod_autoindex)

指定したファイルの中身が、ファイル一覧の最初に挿入されます。HTML ドキュメントか、プレインテキストとして書くことが出来ます。ここで HeaderName README と指定すると、まず README.html を見つけてみて、無ければ README を読み込もうとします。

ReadmeName file-name
(mod_autoindex)

HeaderName と似ていますが、こちらはファイルの最後に挿入されれます。

AddEncoding mime-encoding extension[ extension] ...
(mod_mime)

指定された拡張子を持ったファイルをクライアントに送るときに、HTTP レスポンスヘッダーにこのエンコード形式が渡されます。ブラウザはこのエンコード形式を見て、特別な処理(ファイルを解凍するとか)をする場合があります。

AddLanguage mime-lang extension[ extension] ...
(mod_mime)

指定された拡張子を持ったファイルを、その言語で書かれていると判断するように Apache に登録します。詳しくはコンテントネゴシエーションで別途説明します。ファイル名は、その拡張子で終わっている必要はなく、その拡張子を含んでいればいいのです。例えば、「home.ja.html, web.html.ja」は、どちらも「ja」という拡張子を含んでいると判断されます。

AddCharset charset extension[ extension] ...
(mod_mime)

こちらは、拡張子毎にキャラクタセットを指定します。ファイル名は、その拡張子で終わっている必要はなく、その拡張子を含んでいればいいのです。例えば、「AddCharset EUC-JP .euc」と指定したら、「link.euc.html」というファイル(euc という拡張子を含んでいる)のキャラクタセットは「EUC-JP」に設定されます。このキャラクタセットは、HTTP レスポンス中の Content-Type: ヘッダーに付加されます。ブラウザはこの値を参照しているので、適切に設定すればブラウザ上での文字化け(ブラウザの文字コード判別ミスによる)が無くなります。コンテントネゴシエーションで別途説明しています。

LanguagePriority mime-lang[ mime-lang] ...
(mod_negotiation)

クライアントに返す言語の優先順位を指定します。クライアントが、Accept-Language: ja, de という HTTP リクエストヘッダーを送ってきた場合、この設定が en, fr, de, ja と指定していれば、de が選択されます。HTTP/1.1 を正しく実装したブラウザであれば、言語名に「重み付け」をしているはずなので、このディレクティブは効果ありません。コンテントネゴシエーションで別途説明しています。

DefaultLanguage mime-lang
(mod_mime)

AddLanguage で指定された拡張子を含んでいないファイル、つまりどの言語で書かれたか分からないファイルに対して、そのファイルの言語を指定します。コンテントネゴシエーションで別途説明しています。

AddHandler handler-name extension[ extension] ...
(mod_mime)

拡張子毎に実行するハンドラを設定します。ハンドラとは、アクセスがあった場合に、そのファイルを解析・実行するための機能です。このハンドラは、一部のモジュールによって提供されています。現在標準で添付されているハンドラには、cgi-script(mod_cgi), send-as-is(mod_asis), imap-file(mod_imap), type-map(mod_negotiation), server-parsed(mod_include) があります(これ以外に二つあり、SetHandler で説明しています)。カッコの中はハンドラを提供するモジュール名です。cgi-script はフィルを CGI として実行、send-as-is は HTTP ヘッダも書かれたファイルの処理、imap-file はサーバサイドイメージマップの処理、type-map は言語によって処理するファイルを変更するためのマッピング、server-parsed は SSI の処理を行うハンドラです。例えば「AddHandler cgi-script cgi」と指定すれば、拡張子が cgi のファイルが CGI として実行されるようになります。

SetHandler handler-name
(mod_mime)

AddHandler と似ていますが、このディレクティブはハンドラ名だけを指定します。これは拡張子に関係なく、そこに存在するファイルすべてにハンドラを設定することになります。また、server-status(mod_status), server-info(mod_info) の様に、ファイルを処理しないハンドラもこれで指定します。server-status はサーバのステータス報告、server-info はサーバの設定情報を表示するハンドラです。

ErrorDocument error-status url|string

Apache が指定された HTTP エラーステータスをクライアントに送ろうとしたときに、Apache のデフォルトのメッセージではなく、指定されたファイルを送るようになります。例えば、「ErrorDocument 404 notfound.html」と指定すると、存在しないファイルへのアクセスがあったときに、notfound.html が返されます。ファイルには、普通の HTML や、CGI などが指定できます。また、リモートの URL も指定することが出来ます(この場合はクライアントに 302 が送られ、ブラウザに指定の URL にリダイレクトするように指示します)。ファイルではなく、メッセージを直接書くことも出来ます。

BrowserMatch regex envar[=value][ envar[=value]] ...
(mod_setenvif)

ユーザからのリクエストがあると、HTTP リクエストヘッダーの User-Agent:(ブラウザの種類)に対して regex がマッチした場合、後ろの変数が環境変数として設定されます。この設定された環境変数は、他のモジュールや、CGI などで利用されます。

SetEnvIf attribute regex envar[=value][ envar[=value]] ...
(mod_setenvif)

attribute には、HTTP リクエストヘッダーか、Remote_Host(クライアントのホスト名)、Remote_Addr(クライアントの IP アドレス)、Remote_User(認証された名前 - 認証してるなら)、Request_Method(HTTP メソッド - GET,POST,etc..)、Request_URI(URL のホスト名より後ろの部分) が指定できます。BrowserMatch が、User-Agent: が対象だったのに対して、こちらは任意のヘッダーに対して処理を行えます。そのほかは BrowserMatch と同じです。

戻る