<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
<!-- English revision: 1.17 -->

<!--
 Copyright 2002-2004 The Apache Software Foundation

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_include.xml.meta">

<name>mod_include</name>
<description>サーバがパースする html ドキュメント (Server Side Includes)</description>
<status>Base</status>
<sourcefile>mod_include.c</sourcefile>
<identifier>include_module</identifier>

<summary>

    <p>このモジュールはファイルがクライアントに送られる前に処理するフィルタを
    提供します。処理の内容は<em>要素</em>と呼ばれる特別な形式の SGML コメントにより
    制御されます。これらの要素は条件分岐や、他のファイルや
    プログラムの出力の取り込み、環境変数の設定や表示を行なうことが
    できます。</p>

</summary>
    <seealso><directive module="core">Options</directive></seealso>
    <seealso><directive module="core">SetOutputFilter</directive></seealso>
    <seealso><directive module="core">AcceptPathInfo</directive></seealso>

<section id="enabling">
    <title>Server-Side Includes を有効にする</title>

    <p>Server Side Includes は <code>INCLUDES</code>
    <a href="../filter.html">フィルタ</a> により実装されています。
    Server-side include のディレクティブを含むドキュメントの拡張子が
    .shtml の場合、以下のディレクティブでは Apache がそれらを
    パースして、その結果できるドキュメントに <code>text/html</code> の
    MIME タイプを割り当てます:</p>

    <example>
      AddType text/html .shtml<br />
      AddOutputFilter INCLUDES .shtml
    </example>

    <p>以下のディレクティブは shtml ファイルのあるディレクトリで指定されている
    必要があります (通常は <code>&lt;Directory&gt;</code> セクション
    で指定しますが、<code>AllowOverride Options</code> が設定されていると、
    .htaccess ファイルに書くこともできます):</p>

    <example>
      Options +Includes
    </example>

    <p>互換性を保つために、<code>server-parsed</code>
    <a href="../handler.html">ハンドラ</a> も INCLUDES フィルタを
    有効にします。MIME タイプ <code>text/x-server-parsed-html</code> や
    <code>text/x-server-parsed-html3</code> のドキュメントに対しても
    Apache は INCLUDES フィルタを有効にします (出力されるものは
    MIME タイプ <code>text/html</code> になります)。</p>

    <p>詳しい情報は <a
    href="../howto/ssi.html"> Server Side
    Includes のチュートリアル</a> を読んでください。</p>

</section>

<section id="basic">
    <title>基本要素</title>
    <p>ドキュメントは、SGML のコメントとして特別なコマンドが埋め込まれた
    HTML ドキュメントとしてパースされます。コマンドの構文は次のように
    なっています:</p>

    <example>
      <code>&lt;!--#</code><em>element attribute=value
      attribute=value ...</em> <code>--&gt;</code>
    </example>

    <p>値 (訳注: value) は二重引用符で囲まれることがよくあります。多くのコマンドは
    属性-値 (訳注: attribute-value) の組を一つだけ指定できます。
    コメントの終わり (<code>--&gt;</code>)
    の前には、SSI の句の一部だと解釈されないようにするために空白を
    入れてください。</p>

    <p>要素 (訳注: element) には以下のものを指定することができます:</p>

    <dl>
      <dt><strong>config</strong></dt>

      <dd>
        <p>このコマンドはパース時の振る舞いを制御します。指定可能な属性は:</p>

        <dl>
          <dt><strong>errmsg</strong></dt>

          <dd>値はドキュメントのパース時にエラーが発生した場合に
          クライアントに送られるメッセージです。</dd>

          <dt><strong>sizefmt</strong></dt>

          <dd>この値はファイルの大きさを表示するときに使われるフォーマットを
          設定します。有効な値はバイト単位で表示する <code>bytes</code> と、
          状況に応じて Kb や Mb を使う <code>abbrev</code> です。</dd>

          <dt><strong>timefmt</strong></dt>

          <dd>値は日付を表示するときに <code>strftime(3)</code> ライブラリ関数が
          使う文字列です。</dd>
        </dl>
      </dd>

      <dt><strong><a name="echo">echo</a></strong></dt>

      <dd>
        <p>このコマンドは以下で定義されている <a href="#includevars">include
        変数</a> を表示します。変数が設定されていない場合は <code>(none)</code>
        と表示されます。日付はその時点での <code>timefmt</code> に従って
        表示されます。</p>

        <p>属性:</p> 

        <dl>
          <dt><strong>var</strong></dt>

          <dd>値は表示する変数の名前です。</dd>

          <dt><strong>encoding</strong></dt>

          <dd>Apache が変数を出力する前に、特別な文字をエンコードする
          方法を指定します。"none" に設定されていると、エンコードは行なわれません。
          "url" に設定されていると、URL エンコード (%-エンコードとも
          呼ばれています。これはリンクの URL での使用に適しています) が
          行なわれます。<code>echo</code> 要素の開始時は、デフォルトは
          "entity" に設定されています。これはエンティティエンコード
          (段落やテキストなどのブロックレベルの HTML エレメントのコンテキストに
          適しています) を行ないます。これは <code>encoding</code> 属性
          を加えることで変更できます。変更は次の <code>encoding</code> 属性か、
          要素の終了まで効力を持ちます。<code>encoding</code> 属性は
          エンコードの変更をしたい <code>var</code> の<em>前に</em> ある
          必要があることに注意してください。また、ISO-8859-1 エンコーディングで
          定義されている特別な文字だけがエンコードされます。
          別の文字のエンコーディングが使われている場合、このエンコーディングは
          望みの結果をもたらさないかもしれません。これは、Apache 1.3.12 以降
          で使用可能です。以前のバージョンはエンコードを行ないません。</dd>
        </dl>
      </dd>

      <dt><strong>exec</strong></dt>

      <dd>
        <p>exec コマンドは指定されたシェルコマンドや CGI スクリプトを
        実行します。<module>mod_cgi</module> がサーバに組み込まれていることが
        必要です。IncludesNOEXEC <directive
        module="core">Option</directive> はこのコマンドを無効にします。
        使用可能な属性は:</p>

        <dl>
          <dt><strong>cgi</strong></dt>

          <dd>
            <p>値は (%-エンコードされた) URL を指定します。パスが
            スラッシュ (/) で始まらないときは、ドキュメントからの
            相対パスとして扱われます。このパスで参照されているドキュメントは
            サーバが CGI スクリプトとして扱っていなくても CGI スクリプトとして
            起動されます。ただし、スクリプトのあるディレクトリでは
            (<directive module="mod_alias">ScriptAlias</directive>
            や ExecCGI <directive module="core">Option</directive> によって)
            CGI スクリプトの使用が許可されている必要があります。</p>

            <p>CGI スクリプトには PATH_INFO とクライアントからの
            元々のリクエストのクエリー文字列が渡されます。スクリプトは標準
            <a href="mod_cgi.html">CGI</a> 環境に加えて、include 変数を
            使用することができます。</p>

            <p>例えば:</p>

  <example>&lt;!--#exec cgi="/cgi-bin/example.cgi" --&gt;</example>

            <p>スクリプトが出力の代わりに Location: ヘッダを返すと、
            HTML のアンカーに変換されます。</p>

            <p><code>exec cgi</code> よりも、
            <code><a href="#includevirtual">include virtual</a></code>
            の方を使うようにしてください。特に、CGI への追加の引数を
            クエリー文字列を使って渡すことは <code>exec cgi</code> は
            できませんが、<code>include virtual</code> は以下のようにして
            可能です。</p>

  <example>
  &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
  </example>

          </dd>

          <dt><strong>cmd</strong></dt>

          <dd>
          <p>サーバは指定された文字列を <code>/bin/sh</code> を使って
          実行します。コマンドは通常の CGI 変数に加えて <a
          href="#includevars">include 変数</a>も使うことができます。</p>

        <p>ほとんどいつも、<code><a href="#includevirtual">#include 
        virtual</a></code> を使う方が <code>#exec cgi</code> や <code>#exec
        cmd</code> を使うよりも良い方法です。前者 (<code>#include virtual</code>)
        は標準の Apache のサブリクエスト機構を使ってファイルやスクリプトの
        出力を取り込みます。その方法の方がよりたくさん試され、
        よく維持されています。</p>

          <p>さらに、Win32 のようないくつかのプラットフォームや、suexec
          を使っている unix では、<code>exec</code> ディレクティブのコマンドに
          引数を渡したり、コマンドに空白を入れることはできません。
          ですから、以下のものは unix の suexec でない設定では動作しますが、
          Win32 や suexec を使っている unix では期待した結果にはなりません:</p>

   <example>
   &lt;!--#exec cmd="perl /path/to/perlscript arg1 arg2" --&gt;
   </example>

          </dd>
        </dl>
      </dd>

      <dt><strong>fsize</strong></dt>

      <dd>
        <p>このコマンドは指定されたファイルの大きさを <code>sizefmt</code> の
        書式指定に基づいて出力します。属性は:</p>

        <dl>
          <dt><strong>file</strong></dt>

          <dd>値は解析されているドキュメントの存在するディレクトリからの
          相対パスです。</dd>

          <dt><strong>virtual</strong></dt>

          <dd> 値は (% エンコードされた) URL-path です。スラッシュ (/) で
          始まらないときはドキュメントからの相対パスとして扱われます。</dd>

        </dl>
      </dd>

      <dt><strong>flastmod</strong></dt>

      <dd>このコマンドは指定されたファイルの最終修正時刻を
      <code>timefmt</code> 書式指定に従って表示します。
      指定可能な属性は <code>fsize</code> コマンドと同じです。</dd>

      <dt><strong>include</strong></dt>

      <dd>
        <p>このコマンドは別の文書やファイルのテキストを解析しているファイルに
        挿入します。挿入されるファイルはアクセス制御の管理下にあります。
        解析しているファイルの存在するディレクトリに
        <a href="core.html#options">Option</a> IncludesNOEXEC が
        設定されていて、文書の挿入によりプログラムが実行されるような場合は、
        その文書は挿入されません。その Option の設定は CGI スクリプトの実行を
        禁止するからです。その他の場合は、
        クエリー文字列も含め、コマンドで指定された
        完全な URL を使って普通に CGI スクリプトが呼び出されます。</p>

        <p>属性が文書の位置を指定します。include コマンドに与えられたそれぞれの
        属性に対して挿入作業が行なわれます。有効な属性は:</p>

        <dl>
          <dt><strong>file</strong></dt>

          <dd>値は解析されているドキュメントの存在するディレクトリからの
          相対パスです。
          <code>../</code> を含んでいたり、絶対パスを指定したりはできません。
          ですから、ドキュメントルートの外にあるファイルや、ディレクトリ構造で
          上位にあるファイルを挿入することはできません。
          常にこの属性よりは、<code>virtual</code> 属性を使うようにしてください。
          </dd>

          <dt><strong><a name="includevirtual">virtual</a></strong></dt>

         <dd>
          <p>値は解析されているドキュメントからの (% エンコードされた) URL
          です。URL にはスキームやホスト名を含めることはできません。パスと、
          もしあればクエリー文字列を指定できるだけです。スラッシュ (/) から
          始まらない場合は、ドキュメントからの相対パスとして扱われます。</p>

          <p>URL は属性から作られ、その URL をクライアントがアクセスしたときに
          出力される内容が解析後の出力に含められます。ですから、挿入される
          ファイルは入れ子構造にすることができます。</p>

          <p>指定された URL が CGI プログラムであった場合は、
          プログラムが実行され、その出力が解析しているファイル中の
          ディレクティブがあった位置に挿入されます。CGI の url に
          クエリー URL を入れることもできます:</p>

     <example>
     &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
     </example>
           
           <p>HTML ドキュメントに CGI プログラムの出力を含める方法としては、
           <code>include virtual</code> の方が <code>exec cgi</code> よりも
           好ましい方法です。</p>
          </dd>
        </dl>
      </dd>

      <dt><strong>printenv</strong></dt>

      <dd>
      <p>これは、存在するすべての変数とその値を表示します。Apache 1.3.12 から、
      特別な文字は出力される前にエンティティエンコード (詳細は <a
      href="#echo"><code>echo</code></a> 要素を参照) されるようになりました。
      属性はありません。</p>

      <p>例えば:</p>

      <example>
      &lt;!--#printenv --&gt;
      </example>

      <p><strong>printenv</strong> 要素は Apache 1.2 以降でのみ使用可能です。</p>
    </dd>
      <dt><strong>set</strong></dt>

      <dd>
        これは変数の値を設定します。属性は:

        <dl>
          <dt><strong>var</strong></dt>

          <dd>設定する変数の名前。</dd>

          <dt><strong>value</strong></dt>

          <dd>変数に設定する値。</dd>
        </dl>
        <p>例えば:</p>
        
        <example>
        &lt;!--#set var="category" value="help" --&gt;
        </example>

      <p><strong>set</strong> 要素は Apache 1.2 以降でのみ使用可能です。</p>
      </dd>
    </dl>
</section>

<section id="includevars">
    <title>Include 変数</title>

    <p>標準 CGI 環境の変数に加えて、<code>echo</code> コマンドや、
    <code>if</code> や <code>elif</code>, それにドキュメントから呼び出される
    すべてのプログラムから使用できる変数があります。</p>

    <dl>
      <dt>DATE_GMT</dt>

      <dd>グリニッジ標準時による現在時刻。</dd>

      <dt>DATE_LOCAL</dt>

      <dd>ローカルの標準時による現在時刻。</dd>

      <dt>DOCUMENT_NAME</dt>

      <dd>ユーザがリクエストした (ディレクトリを除いた) ファイル名。</dd>

      <dt>DOCUMENT_URI</dt>

      <dd>ユーザがリクエストした (% エンコードされた) URL-path。
      挿入ファイルが入れ子になっている場合は、解析されている
     ドキュメントの URL では<em>ない</em>ことに注意してください。</dd>

      <dt>LAST_MODIFIED</dt>

      <dd>ユーザがリクエストしたドキュメントの最終修正時刻。</dd>
    </dl>
</section>

<section>
    <title>変数置換</title>

    <p>変数置換はたいていの場合 SSI ディレクティブの引数として妥当な場所にある
    引用符で囲まれた文字列中で行なわれます。これに該当するものには、
    <code>config</code>,
    <code>exec</code>, <code>flastmod</code>, <code>fsize</code>,
    <code>include</code>, <code>echo</code>, <code>set</code> の
    各ディレクティブと、条件分岐用のオペレータへの引数があります。
    ドル記号はバックスラッシュを使うことで使うことができます:</p>

<example>
    &lt;!--#if expr="$a = \$test" --&gt;
</example>

    <p>変数名としてみなされる文字列の中で変数への参照を置換する必要があるときは、
    シェルでの変数置換のように、中括弧で括ることで区別することができます:</p>

<example>
    &lt;!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" --&gt;
</example>

    <p>この例では、<code>REMOTE_HOST</code> が
    "<code>X</code>" で <code>REQUEST_METHOD</code> が
    "<code>Y</code>" のときに変数 <code>Zed</code> を "<code>X_Y</code>"
    に設定します。</p>

    <p>例: 以下の例では、DOCUMENT_URI が /foo/file.html のときに
    "in foo" を、/bar/file.html のときに "in bar" を、どちらでもないときには
    "in neither" を表示します:</p>

<example>
    &lt;!--#if expr="\"$DOCUMENT_URI\" = \"/foo/file.html\"" --&gt;<br />
&nbsp;&nbsp;    in foo<br />
    &lt;!--#elif expr="\"$DOCUMENT_URI\" = \"/bar/file.html\"" --&gt;<br />
&nbsp;&nbsp;    in bar<br />
    &lt;!--#else --&gt;<br />
&nbsp;&nbsp;    in neither<br />
    &lt;!--#endif --&gt;
</example>
</section>

<section id="flowctrl">
    <title>フロー制御用要素</title>

    <p>Apache 1.2 以降で使用できます。基本フロー制御要素は:</p>

<example>
    &lt;!--#if expr="<em>test_condition</em>" --&gt;<br />
    &lt;!--#elif expr="<em>test_condition</em>" --&gt;<br />
    &lt;!--#else --&gt;<br />
    &lt;!--#endif --&gt;
</example>

    <p><strong><code>if</code></strong> 要素はプログラミング言語の
    if 文と同じように動作します。条件が評価され、結果が真であれば
    <strong><code>elif</code></strong> か
    <strong><code>else</code></strong> か <strong><code>endif</code></strong>
    までの文字列が出力に挿入されます。</p>

    <p><strong><code>elif</code></strong> や <strong><code>else</code></strong>
    文は test_condition が偽のときにテキストを出力に挿入するために使われます。
    これらの要素はあってもなくても構いません。</p>

    <p><strong><code>endif</code></strong> 要素は <strong><code>if</code></strong>
    要素を終了させます。この要素は必須です。</p>

    <p><em>test_condition</em> は以下のどれかです:</p>

    <dl>
      <dt><em>string</em></dt>

      <dd><em>string</em> が空でない場合に真です</dd>

      <dt><em>string1</em> = <em>string2</em><br />
       <em>string1</em> != <em>string2</em><br />
       <em>string1</em> &lt; <em>string2</em><br />
       <em>string1</em> &lt;= <em>string2</em><br />
       <em>string1</em> &gt; <em>string2</em><br />
       <em>string1</em> &gt;= <em>string2</em></dt>

      <dd>string1 と string2 を比較します。string2 が <em>/string/</em>
      という形式であれば、正規表現として比較されます。正規表現は
      Unix の <code>egrep</code> コマンドと同じ構文です。</dd>

      <dt>( <em>test_condition</em> )</dt>

      <dd><em>test_condition</em> が真のときに真です</dd>

      <dt>! <em>test_condition</em></dt>

      <dd><em>test_condition</em> が偽のときに真です</dd>

      <dt><em>test_condition1</em> &amp;&amp;
      <em>test_condition2</em></dt>

      <dd><em>test_condition1</em> と
      <em>test_condition2</em> の両方が真のときに真です</dd>

      <dt><em>test_condition1</em> || <em>test_condition2</em></dt>

      <dd><em>test_condition1</em> と
      <em>test_condition2</em> のどちらかが真のときに真です</dd>
    </dl>

    <p>"<em>=</em>" と "<em>!=</em>" の方が "<em>&amp;&amp;</em>" より
    きつく束縛します。"<em>!</em>" の束縛が一番きつくなっています。
    ですから以下の二つは等価です:</p>

<example>
    &lt;!--#if expr="$a = test1 &amp;&amp; $b = test2" --&gt;<br />
    &lt;!--#if expr="($a = test1) &amp;&amp; ($b = test2)" --&gt;
</example>

    <p>変数やオペレータとして認識されないものはすべて文字列として
    扱われます。文字列は引用符で囲むこともできます: <em>'string'</em>
    のように。引用符で囲まれていない文字列には空白 (スペースとタブ)
    を含めることはできません。それらは変数などの句を分離するために
    使われているからです。複数の文字列が続いているときは、
    空白を間に入れて一つにくっつけられます。ですから、</p>

<example>
    <pre><em>string1    string2</em>  は <em>string1 string2</em> になります</pre>
    <pre><em>'string1    string2'</em> は <em>string1    string2</em> になります</pre>
</example>

</section>

<section>
    <title>ErrorDocuments で Server Side Includes を使う</title>

    <p>mod_include の機能を使って、国際化され、カスタマイズされたエラー
    ドキュメントを提供するための方法を説明した
    <a href="../misc/custom_errordocs.html">文書</a>があります。</p>

</section>

<section><title>Server Side Includes での PATH_INFO</title>

    <p>server-side includes で処理されるファイルは PATH_INFO
    (後に付いたパス名の情報) 付きのリクエストを受け付けなくなりました。
    PATH_INFO の付いたリクエストを受け付けるように設定するために、<directive
    module="core">AcceptPathInfo</directive> ディレクティブを
    使うことができます。</p>

</section>

<directivesynopsis>
<name>SSIEndTag</name>
<description>include 要素を終了させる文字列</description>
<syntax>SSIEndTag <em>tag</em></syntax>
<default>SSIEndTag &quot;--&gt;&quot;</default>
<contextlist><context>server config</context>
<context>virtual host</context></contextlist>
<compatibility>バージョン 2.0.30 以降で使用可能。
</compatibility>

<usage>
    <p>このディレクティブは mod_include が探す、include 要素の終了を示す
    文字列を変更します。</p>

    <example>
    <title>例</title>
    SSIEndTag "%&gt;"
    </example>

</usage>
<seealso><directive module="mod_include">SSIStartTag</directive></seealso>
</directivesynopsis>

<directivesynopsis>
<name>SSIUndefinedEcho</name>
<description>未定義の変数が echo されたときに表示される文字列</description>
<syntax>SSIUndefinedEcho <em>tag</em></syntax>
<default>SSIUndefinedEcho &quot;(none)&quot;</default>
<contextlist><context>server config</context>
<context>virtual host</context></contextlist>
<compatibility>バージョン 2.0.34 以降で使用可能。
</compatibility>

<usage>
    <p>このディレクティブは変数が定義されていないにも関わらず
    &quot;echo&quot; されたときに mod_include が表示する文字列を
    変更します。</p>

    <example>
    <title>例</title>
    SSIUndefinedEcho "&lt;!-- undef --&gt;"
    </example>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>SSIErrorMsg</name>
<description>SSI のエラーがあったときに表示されるエラーメッセージ</description>
<syntax>SSIErrorMsg <em>message</em></syntax>
<default>SSIErrorMsg 
&quot;[an error occurred while processing this directive]&quot;</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>All</override>
<compatibility>バージョン 2.0.30 以降で使用可能</compatibility>

<usage>
    <p>SSIErrorMsg ディレクティブは mod_include がエラーが起こったときに
    表示するメッセージを変更します。プロダクションサーバでは
    メッセージがユーザに表示されないようにするために
    デフォルトエラーメッセージを <code>&quot;&lt;!-- Error --&gt;&quot;</code>
    に変えるというようなことを考えるかもしれません。</p>

    <p>このディレクティブは <code>&lt;!--#config
    errmsg=<em>message</em> --&gt;</code> 要素と同じ効果になります。</p>

    <example>
    <title>例</title>
    SSIErrorMsg "&lt;!-- Error --&gt;"
    </example>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>SSIStartTag</name>
<description>include 要素を開始する文字列</description>
<syntax>SSIStartTag <em>tag</em></syntax>
<default>SSIStartTag &quot;&lt;!--&quot;</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>
<compatibility>バージョン 2.0.30 以降で使用可能。</compatibility>

<usage>

    <p>このディレクティブは mod_include が探す、include 要素の開始を
    示す文字列を変更します。</p>

    <p>二つのサーバが (もしかすると違うときに) ファイルの出力を解析していて、
    それぞれに違うコマンドを処理させたい、
    というようなときにこのオプションを使います。</p>

    <example>
    <title>例</title>
    SSIStartTag "&lt;%"
    </example>

    <p>上の例と、それに対応する
    <directive module="mod_include">SSIEndTag</directive> を使うと、
    下の例の様にして SSI ディレクティブを使うことができます:</p>

    <example>
    <title>違う開始と終了のタグを使った SSI ディレクティブ</title>
    &lt;%#printenv %&gt;
    </example>

</usage>
<seealso><directive module="mod_include">SSIEndTag</directive></seealso>
</directivesynopsis>

<directivesynopsis>
<name>SSITimeFormat</name>
<description>日付けを現す文字列の書式を設定する</description>
<syntax>SSITimeFormat <em>formatstring</em></syntax>
<default>SSITimeFormat &quot;%A, %d-%b-%Y %H:%M:%S %Z&quot;</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>All</override>
<compatibility>バージョン 2.0.30 以降で使用可能。</compatibility>

<usage>
<p>このディレクティブは DATE 環境変数を echo して日付を現す文字列が
    表示されるときの書式を変更します。<em>formatstring</em> は
    C 標準ライブラリの strftime(3) と同じ形式です。</p>

    <p>このディレクティブは <code>&lt;!--#config
    timefmt=<em>formatstring</em> --&gt;</code> 要素と同じ効果になります。</p>

    <example>
    <title>例</title>
    SSITimeFormat "%R, %B %d, %Y"
    </example>

    <p>上のディレクティブでは、日付は "22:26, June 14, 2002" という
    形式で表示されます。</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>XBitHack</name>
<description>実行ビットが設定されたファイルの SSI ディレクティブを
解析する</description>
<syntax>XBitHack on|off|full</syntax>
<default>XBitHack off</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
<context>directory</context>
<context>.htaccess</context>
</contextlist>
<override>Options</override>

<usage>
    <p>XBitHack ディレクティブは通常の HTML ドキュメントの解析を
    制御します。このディレクティブは MIME タイプ <code>text/html</code>
    と関連付けられているファイルにのみ影響します。XBitHack は
    以下の値をとることができます:</p>

    <dl>
      <dt>off</dt>

      <dd>実行可能ファイルに対して特別な扱いをしません。</dd>

      <dt>on</dt>

      <dd>ユーザの実行ビットが設定されている text/html ファイルが
      SSI html ドキュメントとして扱われます。</dd>

      <dt>full</dt>

      <dd>
        <code>on</code> と同様ですが、グループ実行ビットもテストします。
        もしそれが設定されていれば、返されるファイルの Last-modified の
        日付をファイルの最終修正時刻にします。それが設定されていないときは、
        last-modified の日付は送られません。このビットを設定すると、
        クライアントやプロキシがリクエストをキャッシュできるようになります。

        <note><strong>注意:</strong> 他の CGI を <code>#include</code>
        するかもしれないものや、各アクセスに対して違う出力を生成する
        (もしくは後のリクエストで変わるかもしれないもの)
        すべての SSI スクリプトに対してグループ実行ビットが
        設定されていないことを確認できない場合は、full は使わない方が良い
        でしょう。</note>
      </dd>
    </dl>

    </usage>
</directivesynopsis>

</modulesynopsis>

