[ホーム] -> [Aache + PHP + PostgreSQL 実験室] |
Apache が扱うファイルや、CGI などのプログラムに関する設定を行う項目です。ファイルの拡張子に対して、どのような処理を行うかなどの設定が多いですね。
サーバが公開する、ルートとなるディレクトリを指定します。最後にスラッシュ「/
」は付けないようにしましょう。
option
には、All, ExecCGI, FollowSymLinks, Includes, IncludesNOEXEC, Indexes, MultiViews, SymLinksIfOwnerMatch
を指定できます。各値の前に、プラス「+
」かマイナス「-
」を指定でき、それぞれの機能を有効(+
)か無効(-
)にできます。それぞれの値の意味ですが、ExecCGI
が CGI の実行の許可、FollowSymLinks
がシンボリックリンクファイルを有効にする、Includes
が SSI の許可、IncludesNOEXEC
が #exec, #include
を除いた SSI の許可、Indexes
がインデックスファイルが無い場合にファイルリストの表示、MultiViews
がインデックスファイルがない場合にコンテンツネゴシエーション(後で別途説明)を有効に、SymLinksIfOwnerMatch
は、シンボリックリンクファイルのあるディレクトリと、リンク先が同じユーザの時のみシンボリックリンクファイルを有効にするかを意味します。最後に、All
を指定すると MultiViews
を除いたすすべてが対象になります。
type
には、AuthConfig, FileInfo, Indexes, Limit, Options, All, None
を指定できます。ここで指定するのは、.htaccess
ファイルで上書きできるディレクティブの種類です。
それぞれ、AuthConfig
は Auth*, Require
などの認証を指定するディレクティブ、FileInfo
は AddEncoding, AddType, ErrorDucument
などのドキュメントタイプをコントロールするディレクティブ、Indexes
はファイル一覧の表示をコントロールするディレクティブ、Limit
は Allow, Deny, Order
、Options
は Options, XBitHack
の設定を上書きできるようにします。All
を設定した場合はすべての設定を上書きできるようになり、None
を指定した場合は上書きできなくなります。
ユーザ毎の公開するディレクトリを指定します。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
として一部の人のみ許可することも出来ます。
クライアントからのリクエストがスラッシュ「/
」で終わっていた場合、そのディレクトリの中からどのファイルを表示させるかを指定します。スペースで区切って、一つ以上指定することが出来ます。複数指定した場合、最初に指定したものからファイルがあるか調べ、最初に見つかったファイルをクライアントに返します。ファイルを指定するだけだと思われがちですが、/cgi-bin/list.pl
などとすることも出来ます。ローカルファイルシステムのパスではなく、URL なのに注意してください。
MIME タイプの書かれたファイルのパスを指定します。このファイルは、「mime-type[ extension extension]] ...
」となっています。行頭が #
で始まる行は無視されます。
ファイルタイプを調べる定義ファイルへのパスを指定します。この定義に従い、ファイルの中のデータを元に、ファイルの MIME タイプを判別します。ファイル内部に決まったデータがあれば、バイナリファイルでも判別できます(画像ファイルや音楽のファイル、圧縮ファイルとか)。このファイルの判別は、TypesConfig
では判別できないファイルに対して行われます。ファイルフォーマットが違うにも関わらず、同じ拡張子を使っているようなファイルや、ファイルの中身に対して拡張子が信用できないような場合に効果があります。
extension
は拡張子です。TypesConfig
などのファイルで定義されていないファイルを指定するときに使います。.htaccess
で指定できるので、TypesConfig
が編集できない人は、こちらを使います。
MIME タイプが判別できなかったときに利用される MIME タイプです。
クライアントから指定された url
を、path
にマッピングします。例えば「Alias /icons/ /usr/local/apache/icons/
」と指定されると、http://www.domain.com/icons/abc.gif
というアクセスに対して、/usr/local/apache/icons/abc.gif
のデータが返されます。この指定をすると、DocumentRoot
などの設定に関係なく、別のディレクトリを指定することが出来るようになります。
上と同じように URL とパスをマッピングしますが、こちらは CGI スクリプトを含むディレクトリを指定します。これで指定したディレクトリの中に CGI があった場合は、実行できるようになります。
Options +Indexes
が設定されている場合に、ディレクトリを指定されたときに表示するファイル一覧をカスタマイズします。かなり豊富なオプションがあるので、ここでは説明を省きます。マニュアルを見てください。機能としては、ファイル毎に表示するアイコンの大きさだとか、HTML ファイルがあった場合、<title>
タグの値を表示するとか、ソートする列の指定だとか、ファイルのサイズを表示しないようにしたりとか出来ます。
ファイル一覧の、ファイル名の頭に表示する画像ファイルを、拡張子ごとに指定できます。拡張子の代わりに「^^DIRECTORY^^
」と指定するとディレクトリが対象になります。また、拡張子ではなく、ワイルドカードも利用できます。
AddIcon
と似てますが、こちらは拡張子ではなく MIME タイプを指定します。
AddIcon
と似てますが、こちらは拡張子ではなくエンコーディング形式(AddEncoding
で指定するやつ)を指定します。
AddIcon*
による指定のいずれにも当てはまらなかった場合に、このアイコンが利用されます。
これもファイル一覧で効果があります。指定したファイルの右側に説明文字列が表示されるようになります。
指定したファイルの中身が、ファイル一覧の最初に挿入されます。HTML ドキュメントか、プレインテキストとして書くことが出来ます。ここで HeaderName README
と指定すると、まず README.html
を見つけてみて、無ければ README
を読み込もうとします。
HeaderName
と似ていますが、こちらはファイルの最後に挿入されれます。
指定された拡張子を持ったファイルをクライアントに送るときに、HTTP レスポンスヘッダーにこのエンコード形式が渡されます。ブラウザはこのエンコード形式を見て、特別な処理(ファイルを解凍するとか)をする場合があります。
指定された拡張子を持ったファイルを、その言語で書かれていると判断するように Apache に登録します。詳しくはコンテントネゴシエーションで別途説明します。ファイル名は、その拡張子で終わっている必要はなく、その拡張子を含んでいればいいのです。例えば、「home.ja.html, web.html.ja
」は、どちらも「ja
」という拡張子を含んでいると判断されます。
こちらは、拡張子毎にキャラクタセットを指定します。ファイル名は、その拡張子で終わっている必要はなく、その拡張子を含んでいればいいのです。例えば、「AddCharset EUC-JP .euc
」と指定したら、「link.euc.html
」というファイル(euc
という拡張子を含んでいる)のキャラクタセットは「EUC-JP
」に設定されます。このキャラクタセットは、HTTP レスポンス中の Content-Type:
ヘッダーに付加されます。ブラウザはこの値を参照しているので、適切に設定すればブラウザ上での文字化け(ブラウザの文字コード判別ミスによる)が無くなります。コンテントネゴシエーションで別途説明しています。
クライアントに返す言語の優先順位を指定します。クライアントが、Accept-Language: ja, de
という HTTP リクエストヘッダーを送ってきた場合、この設定が en, fr, de, ja
と指定していれば、de
が選択されます。HTTP/1.1 を正しく実装したブラウザであれば、言語名に「重み付け」をしているはずなので、このディレクティブは効果ありません。コンテントネゴシエーションで別途説明しています。
AddLanguage
で指定された拡張子を含んでいないファイル、つまりどの言語で書かれたか分からないファイルに対して、そのファイルの言語を指定します。コンテントネゴシエーションで別途説明しています。
拡張子毎に実行するハンドラを設定します。ハンドラとは、アクセスがあった場合に、そのファイルを解析・実行するための機能です。このハンドラは、一部のモジュールによって提供されています。現在標準で添付されているハンドラには、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 として実行されるようになります。
AddHandler
と似ていますが、このディレクティブはハンドラ名だけを指定します。これは拡張子に関係なく、そこに存在するファイルすべてにハンドラを設定することになります。また、server-status(mod_status), server-info(mod_info)
の様に、ファイルを処理しないハンドラもこれで指定します。server-status
はサーバのステータス報告、server-info
はサーバの設定情報を表示するハンドラです。
Apache が指定された HTTP エラーステータスをクライアントに送ろうとしたときに、Apache のデフォルトのメッセージではなく、指定されたファイルを送るようになります。例えば、「ErrorDocument 404 notfound.html
」と指定すると、存在しないファイルへのアクセスがあったときに、notfound.html
が返されます。ファイルには、普通の HTML や、CGI などが指定できます。また、リモートの URL も指定することが出来ます(この場合はクライアントに 302 が送られ、ブラウザに指定の URL にリダイレクトするように指示します)。ファイルではなく、メッセージを直接書くことも出来ます。
ユーザからのリクエストがあると、HTTP リクエストヘッダーの User-Agent:
(ブラウザの種類)に対して regex
がマッチした場合、後ろの変数が環境変数として設定されます。この設定された環境変数は、他のモジュールや、CGI などで利用されます。
attribute
には、HTTP リクエストヘッダーか、Remote_Host
(クライアントのホスト名)、Remote_Addr
(クライアントの IP アドレス)、Remote_User
(認証された名前 - 認証してるなら)、Request_Method
(HTTP メソッド - GET,POST,etc..)、Request_URI
(URL のホスト名より後ろの部分) が指定できます。BrowserMatch
が、User-Agent:
が対象だったのに対して、こちらは任意のヘッダーに対して処理を行えます。そのほかは BrowserMatch
と同じです。