|
mod_include.c ファイルに含まれ、デフォルトでコンパイルされます。サーバ解析された html ドキュメントを与えます。オリジナルの NCSA 定義よりもいくつかの命令が Apache 1.2 には含まれています - これらは"Apache 1.2 and above"というフレーズが立てられています。特に重要なのは最後に紹介されている新しいフローコントロール命令です。
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-html か text/x-server-parsed-html3 もまた解析されるでしょう(そして、結果として出力は mime タイプ text/html を与えられます)。
その値はしばしばダブルコーテーションで(”)囲まれます。;多くのコマンドは一組の属性値のみを許可しています。コメントの終わりは SSI の部分を解析されないように空行によって先に立てられるべきです。<!--#element attribute=value attribute=value ...-->
許可された要素:
もしそのスクリプトがロケーション(アウトプットの代わりのヘッダー)を返すならば、これはHTMLの一番最後に表示されます。
virtualインクルード機能がCGIの実行に優先して使用されます。
特徴はそのドキュメントのロケーションを定義することです;その中身はインクルードコマンドで設定されたそれぞれの特徴を実行することです。特徴は:
<!--#printenv -->
<!--#set var="category" value="help" -->
変数の置き換えは、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 -->
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
そのifの要素はプログラミング言語の記述であるかのように動作します。テストコンディションが評価され、もしその結果がtrueなら次のelif、elseまたはB>endifの要素がアウトプットに含まれます。
elifかelseの記述はもしそのオリジナルなテストコンディションがfalseであったならアウトプットにテキストを置きます。これらの要素はオプションです。
endif要素はifを終わらせる要求をします。
test_conditionは次の中のひとつです:
"="と"!="は"&&"と"||"より、よりタイトに関連づけられます。"!"はもっともタイトに関連づけられます。従って次にあげるものは等価です:
<!--#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
XBitHack off
XBitHack命令は普通のhtmlドキュメントの解析をコントロールします。この命令はMIMEタイプのtext/htmlに関連したファイルにだけ作用します。Statusは次のような値をとります。:
onに関する限りではしかしながらまたgroup-executeをテストします。もしそれが設定されているとそのファイルの最終更新日時に返されたファイルの最終更新日時を設定します。もしそれが設定されていないと最終更新日時は設定されません。このbit設定はリクエストの結果をキャッシュすることをクライアントとプロキシーに許可します。
注:
これを使いたくないのは、例えば、それぞれのヒットに異なった出力を作成する CGI を #include するときです(あるいは潜在的にヒットに依存する)。
The English original manual is here.