[an error occurred while processing this directive]
[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

mod_includeモジュール

モジュールは mod_include.c ファイルに含まれ、デフォルトでコンパイルされます。サーバ解析された html ドキュメントを与えます。オリジナルの NCSA 定義よりもいくつかの命令が Apache 1.2 には含まれています - これらは"Apache 1.2 and above"というフレーズが立てられています。特に重要なのは最後に紹介されている新しいフローコントロール命令です。

Server-Side Includes を有効にする

もし Includes オプションが設定されていれば、"サーバ解析"ハンドラーのドキュメントはこのモジュールによって解析されるでしょう。もし server-side include 命令を含んでいるドキュメントは拡張された .shtml を与えられると、以下の命令は Apache にそれを解析させ、text/html の mime タイプに結果として生じるドキュメントを割り当てるでしょう:
AddType text/html .shtml
AddHandler server-parsed .shtml
以下の命令は shtml ファイルを含むディレクトリに与えられなければなりません(もし AllowOverride Options が設定されていれば、通常は <Directory> セクションですが、この命令が正当な .htaccess ファイルでもある場合は除きます):
Options +Includes
代替の XBitHack 命令は、ファイルのパーミッションを基にした典型的な (text/html) ファイルを解析するために使われます。

後方互換のために、mime タイプ text/x-server-parsed-htmltext/x-server-parsed-html3 もまた解析されるでしょう(そして、結果として出力は mime タイプ text/html を与えられます)。

基本的な要素

ドキュメントはSGMLコメントとして埋め込まれた特別なコマンドで書かれたHTMLのドキュメントとして解析されます。コマンドは文法が決まっています:
<!--#element attribute=value attribute=value ... -->
その値はしばしばダブルコーテーションで(”)囲まれます。;多くのコマンドは一組の属性値のみを許可しています。コメントの終わりは SSI の部分を解析されないように空行によって先に立てられるべきです。

許可された要素:

config
このコマンドは文法的関係のさまざまな側面をコントロールします。そのさまざまな属性は:
errmsg
これはもしドキュメントを解析しているあいだにエラーがおこったときクライアントに返すメッセージです。
sizefmt
これはファイルのサイズ表示させるフォーマットを設定します。さまざまな値はバイトで指定し場合はバイト単位で、abbrevを指定した場合はKbまたはMbに短縮して正確に出力します。
timefmt
これは日付を表示させるときstrftime(3)のライブラリルーチンによって使用される文字列です。
echo
このコマンドは以下(Include variables)に定義された変数の値を表示します。もしその変数が設定されていないなら(None)と表示されます。表示されたいくつかの日付はtimefmtで設定でフォーマットされます。属性:
var
その値は表示させる変数の名前です。
exec
そのexecコマンドはシェルコマンドかCGIスクリプトを実行します。IncludesNOEXEC Optionは完全にこのコマンドを使用できないようにします。そのさまざまな属性は:
cgi
その値はCGIスクリプトのURLに対する相対パスを明示します。もしそのパスがスラッシュ(/)で始まらないなら、現在のドキュメントに対する相対パスをとります。このパスで指定されたドキュメントはたとえサーバが普段CGIスクリプトを認識しなくてもCGIスクリプトとして実行されます。しかしながらスクリプトを含むディレクトリでCGIスクリプトが実行可能でなければなりません。(ScriptAliasかExecCGIOptionが設定されている)

もしそのスクリプトがロケーション(アウトプットの代わりのヘッダー)を返すならば、これはHTMLの一番最後に表示されます。

virtualインクルード機能がCGIの実行に優先して使用されます。

cmd
サーバは/bin/shが使用している文字列を実行します。さまざまなインクルード機能がコマンドによって使用するこが出来ます。
fsize
このコマンドはsizefmtで特定されたファイルのサイズを表示します。特徴:
file
これは解析された現在のドキュメントを含むディレクトリの相対パスをとります。
virtual
これは解析されたドキュメントの現在のディレクトリに対して相対URLパス(%-encoded) をとります。もしスラッシュ(/)で始まっていなければ、ドキュメントのある現在のディレクトリに対して相対パスをとります。
flastmod
このコマンドはtimefmtで指定されたフォーマットに従って特定のファイルの最終更新日を表示します。その特徴はfsizeコマンドと同様です。
include
このコマンドは他のドキュメントや解析されたファイルの中のファイルを挿入します。いくつかの挿入されたファイルは普通のアクセスコントロールに従います。もし解析されたファイルを含むディレクトリがOptionでIncludesNOEXECに設定され、実行形式のドキュメントを含んでいるならば、それは実行されないでしょう。これはCGIスクリプトの実行を防ぎます。さもなければCGIスクリプトはコマンドで設定されたクエリー文字列を含んだ完全なURLを普通に使おうとします。

特徴はそのドキュメントのロケーションを定義することです;その中身はインクルードコマンドで設定されたそれぞれの特徴を実行することです。特徴は:

file
valueは解析されたドキュメントがあるディレクトリに対して相対パスをとります。それは../を含むことが出来ず、絶対パスを設定することも出来ません。virtualの特徴は常にこれが優先して使用されることです。
virtual
valueは解析されたドキュメントを含むディレクトリに対して相対パスをとります。URLは図かホスト名を含むことは出来ません。パスと任意の問い合わせ文字のみです。もしそれがスラッシュで始まるならばドキュメントのあるディレクトリに対して相対パスをとります。
URLは属性で構成されます。もしURLが解析された表示を含むクライアントよってアクセスされるならサーバへはアウトプットを返します。その含まれたファイルはネストしています。
printenv
これはすべての存在する変数とそれらの値のリストを表示します。
例: <!--#printenv -->
Apache 1.2以上
set
これは変数の値を設定します。特徴:
var
設定する変数の名前
value
変数に代入する値
For example: <!--#set var="category" value="help" -->
Apache 1.2以上

Include 変数

標準なCGI環境での変数に加えてifとelif、またはドキュメントを呼ぶプログラムに関してechoコマンドを使用することが出来ます。
DATE_GMT
世界標準時による日時
DATE_LOCAL
地域時間による日時
DOCUMENT_NAME
ユーザによって要求されているドキュメントのファイル名(ディレクトリを除く)
DOCUMENT_URI
ユーザによって要求されたドキュメントのURLパス名。ネストされたインクルードファイルの場合には気おつけてください。これは現在処理しているドキュメントに対するURLではありません。
LAST_MODIFIED
ユーザによって要求されたドキュメントの最終更新日時

変数の置き換え

変数の置き換えは、SSI 命令に対する引数としてかなり生じるかもしれない、ほとんどの場合に引用されるストリングで行われます。これはよく条件付きの操作に対する引数として config, exec, flastmod, fsize, include, set 命令を含んでいます。バックスラッシュの引用を使っているストリングに文字のドルを挿入することができます:

    <!--#if expr="$a = \$test" -->

もし変数の参照が、自身の権限に於いて別のやり方で正当な認証を考慮される、文字シーケンスの中央で置換される必要があれば、サスペンダーである à la シェルの置き換えにある指示を囲むことによって、あいまいにすることができます:

    <!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" -->

これは、もし REMOTE_HOST が "X" で、REQUEST_METHOD が "Y" なら "X_Y" に設定されている Zed 変数を結果として生じます。

例: 以下の例は、もし DOCUMENT_URI が /foo/file.html であれば "in foo" をプリントし、そうでなく、/bar/file.html と "in neither" であれば "in bar" をプリントします:

    <!--#if expr="\"$DOCUMENT_URI\" = \"/foo/file.html\"" -->
    in foo
    <!--#elif expr="\"$DOCUMENT_URI\" = \"/bar/file.html\"" -->
    in bar
    <!--#else -->
    in neither
    <!--#endif -->

Flow Control Elements

これらはApache 1.2以上で使用出来ます。基本的なflow control elementsは:
    <!--#if expr="test_condition" -->
    <!--#elif expr="test_condition" -->
    <!--#else -->
    <!--#endif -->

そのifの要素はプログラミング言語の記述であるかのように動作します。テストコンディションが評価され、もしその結果がtrueなら次のelifelseまたはB>endifの要素がアウトプットに含まれます。

elifelseの記述はもしそのオリジナルなテストコンディションがfalseであったならアウトプットにテキストを置きます。これらの要素はオプションです。

endif要素はifを終わらせる要求をします。

test_conditionは次の中のひとつです:

string
もしstringが空ならtrueです。
string1 = string2
string1 != string2
string1 < string2
string1 <= string2
string1 > string2
string1 >= string2
Compare string1 with string 2. If string2 has the form /string/string1とstring2を比較します。もしstring2が/string/の形態をとるならばそれは正規表現として比較されます。正規表現はUNIXのegrepコマンドで見つかったものと同様の文法を持ちます。
( test_condition )
true if test_condition is true
! test_condition
true if test_condition is false
test_condition1 && test_condition2
true if both test_condition1 and test_condition2 are true
test_condition1 || test_condition2
true if either test_condition1 or test_condition2 is true

"="と"!="は"&&"と"||"より、よりタイトに関連づけられます。"!"はもっともタイトに関連づけられます。従って次にあげるものは等価です:

    <!--#if expr="$a = test1 && $b = test2" -->
    <!--#if expr="($a = test1) && ($b = test2)" -->

変数か演算子として認識されないものは文字として扱われます。文字列は'string'のように囲います。シングルクォートで囲まれていない文字列はスペース(ブランクとタブ)を含むことができません。なぜならそれは変数のように別れた形で使用されるからです。もし複数の文字列が一列に存在するならばそれらは使用しているブランクを連結します。

     string1    string2  results in string1 string2
    'string1    string2' results in string1    string2

Directives


XBitHack

Syntax: XBitHack status
Default: XBitHack off
Context: server config, virtual host, directory, .htaccess
Override: Options
Status: Base
Module: mod_include

XBitHack命令は普通のhtmlドキュメントの解析をコントロールします。この命令はMIMEタイプのtext/htmlに関連したファイルにだけ作用します。Statusは次のような値をとります。:

off
実行ファイルを特別に取り扱わない
on
user-executeの設定がされているファイルはサーバ解析htmlドキュメントとして扱われます。
full
onに関する限りではしかしながらまたgroup-executeをテストします。もしそれが設定されているとそのファイルの最終更新日時に返されたファイルの最終更新日時を設定します。もしそれが設定されていないと最終更新日時は設定されません。このbit設定はリクエストの結果をキャッシュすることをクライアントとプロキシーに許可します。

注: これを使いたくないのは、例えば、それぞれのヒットに異なった出力を作成する CGI を #include するときです(あるいは潜在的にヒットに依存する)。


Apache HTTP Server Version 1.3

検索文字
このJAPACHE!ニュースグループへ ( japache.mod.include ) | JAPACHE!ニュースについて | JAPACHE!ホームページへ

Index Home The English original manual is here.


このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。