upload apache
[bottlenecks.git] / rubbos / app / apache2 / manual / mod / mod_include.html.ja.utf8
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>mod_include - Apache HTTP サーバ</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body>
14 <div id="page-header">
15 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p>
16 <p class="apache">Apache HTTP サーバ バージョン 2.0</p>
17 <img alt="" src="../images/feather.gif" /></div>
18 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
19 <div id="path">
20 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="../">バージョン 2.0</a> &gt; <a href="./">モジュール</a></div>
21 <div id="page-content">
22 <div id="preamble"><h1>Apache モジュール mod_include</h1>
23 <div class="toplang">
24 <p><span>Available Languages: </span><a href="../en/mod/mod_include.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25 <a href="../ja/mod/mod_include.html" title="Japanese">&nbsp;ja&nbsp;</a></p>
26 </div>
27 <div class="outofdate">This translation may be out of date. Check the
28             English version for recent changes.</div>
29 <table class="module"><tr><th><a href="module-dict.html#Description">説明:</a></th><td>サーバがパースする html ドキュメント (Server Side Includes)</td></tr>
30 <tr><th><a href="module-dict.html#Status">ステータス:</a></th><td>Base</td></tr>
31 <tr><th><a href="module-dict.html#ModuleIdentifier">モジュール識別子:</a></th><td>include_module</td></tr>
32 <tr><th><a href="module-dict.html#SourceFile">ソースファイル:</a></th><td>mod_include.c</td></tr>
33 <tr><th><a href="module-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0 から出力フィルタとして実装されました。</td></tr></table>
34 <h3>概要</h3>
35
36     <p>このモジュールはファイルがクライアントに送られる前に処理するフィルタを
37     提供します。処理の内容は<dfn>要素</dfn>と呼ばれる特別な形式の SGML コメントにより
38     制御されます。これらの要素は条件分岐や、他のファイルや
39     プログラムの出力の取り込み、環境変数の設定や表示を行なうことが
40     できます。</p>
41 </div>
42 <div id="quickview"><h3 class="directives">ディレクティブ</h3>
43 <ul id="toc">
44 <li><img alt="" src="../images/down.gif" /> <a href="#ssiendtag">SSIEndTag</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#ssierrormsg">SSIErrorMsg</a></li>
46 <li><img alt="" src="../images/down.gif" /> <a href="#ssistarttag">SSIStartTag</a></li>
47 <li><img alt="" src="../images/down.gif" /> <a href="#ssitimeformat">SSITimeFormat</a></li>
48 <li><img alt="" src="../images/down.gif" /> <a href="#ssiundefinedecho">SSIUndefinedEcho</a></li>
49 <li><img alt="" src="../images/down.gif" /> <a href="#xbithack">XBitHack</a></li>
50 </ul>
51 <h3>トピック</h3>
52 <ul id="topics">
53 <li><img alt="" src="../images/down.gif" /> <a href="#enabling">Server-Side Includes を有効にする</a></li>
54 <li><img alt="" src="../images/down.gif" /> <a href="#pathinfo">サーバサイドインクルード (SSI) での PATH_INFO</a></li>
55 <li><img alt="" src="../images/down.gif" /> <a href="#elements">基本要素</a></li>
56 <li><img alt="" src="../images/down.gif" /> <a href="#includevars">Include 変数</a></li>
57 <li><img alt="" src="../images/down.gif" /> <a href="#substitution">変数置換</a></li>
58 <li><img alt="" src="../images/down.gif" /> <a href="#flowctrl">フロー制御要素</a></li>
59 </ul><h3>参照</h3>
60 <ul class="seealso">
61 <li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
62 <li><code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code></li>
63 <li><a href="../misc/custom_errordocs.html">国際化されたカスタムサーバエラーメッセージ</a></li>
64 <li><a href="../filter.html">フィルタ</a></li>
65 <li><a href="../howto/ssi.html">SSI チュートリアル</a></li>
66 </ul></div>
67 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
68 <div class="section">
69 <h2><a name="enabling" id="enabling">Server-Side Includes を有効にする</a></h2>
70     
71
72     <p>Server Side Includes は <code>INCLUDES</code>
73     <a href="../filter.html">フィルタ</a> により実装されています。
74     Server-side include のディレクティブを含むドキュメントの拡張子が
75     .shtml の場合、以下のディレクティブでは Apache がそれらを
76     パースして、その結果できるドキュメントに <code>text/html</code> の
77     MIME タイプを割り当てます:</p>
78
79     <div class="example"><p><code>
80       AddType text/html .shtml<br />
81       AddOutputFilter INCLUDES .shtml
82     </code></p></div>
83
84     <p>以下のディレクティブは shtml ファイルのあるディレクトリで指定されている
85     必要があります (通常は <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> セクションで指定しますが、
86     <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> <code>Options</code>
87     が設定されていると、<code>.htaccess</code> ファイルに書くこともできます):</p>
88
89     <div class="example"><p><code>
90       Options +Includes
91     </code></p></div>
92
93     <p>互換性を保つために、<code>server-parsed</code>
94     <a href="../handler.html">ハンドラ</a> も INCLUDES フィルタを
95     有効にします。MIME タイプ <code>text/x-server-parsed-html</code> や
96     <code>text/x-server-parsed-html3</code> のドキュメントに対しても
97     Apache は INCLUDES フィルタを有効にします (出力されるものは
98     MIME タイプ <code>text/html</code> になります)。</p>
99
100     <p>詳しい情報は <a href="../howto/ssi.html">Tutorial on Server Side Includes</a>.</p>
101 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
102 <div class="section">
103 <h2><a name="pathinfo" id="pathinfo">サーバサイドインクルード (SSI) での PATH_INFO</a></h2>
104     
105
106     <p>SSI で処理されるファイルはデフォルトでは <code>PATH_INFO</code>
107     (後続のパス名情報)
108     付きのリクエストを受け入れなくなりました。<code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code> ディレクティブで
109     <code>PATH_INFO</code> 付きのリクエストを受け入れるようにサーバを
110     設定できます。</p>
111 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
112 <div class="section">
113 <h2><a name="elements" id="elements">基本要素</a></h2>
114     <p>ドキュメントは、SGML のコメントとして特別なコマンドが埋め込まれた
115     HTML ドキュメントとしてパースされます。コマンドの構文は次のように
116     なっています:</p>
117
118     <div class="example"><p><code>
119       &lt;!--#<var>element</var> <var>attribute</var>=<var>value</var>
120       <var>attribute</var>=<var>value</var> ... --&gt;
121     </code></p></div>
122
123     <p>値 (訳注: value) は二重引用符で囲むのが一般的ですが、
124     シングルクオート (') とバッククオート (`) も使用できます。
125     多くのコマンドは属性-値 (訳注: attribute-value) の組を一つだけ指定できます。
126     コメントの終わり (<code>--&gt;</code>)
127     の前には、SSI の句の一部だと解釈されないようにするために空白を
128     入れてください。最初の <code>&lt;!--#</code> はまとめて<em>一つ</em>の
129     句で、空白をふくんではいけないこと注意してください。</p>
130
131     <p>要素 (訳注: element) を以下の表に示します。</p>
132
133     <table class="bordered">
134     <tr><th>要素</th><th>説明</th></tr>
135     <tr><td><code><a href="#element.config">config</a></code></td>
136         <td>configure output formats</td></tr>
137     <tr><td><code><a href="#element.echo">echo</a></code></td>
138         <td>print variables</td></tr>
139     <tr><td><code><a href="#element.exec">exec</a></code></td>
140         <td>execute external programs</td></tr>
141     <tr><td><code><a href="#element.fsize">fsize</a></code></td>
142         <td>print size of a file</td></tr>
143     <tr><td><code><a href="#element.flastmod">flastmod</a></code></td>
144         <td>print last modification time of a file</td></tr>
145     <tr><td><code><a href="#element.include">include</a></code></td>
146         <td>include a file</td></tr>
147     <tr><td><code><a href="#element.printenv">printenv</a></code></td>
148         <td>print all available variables</td></tr>
149     <tr><td><code><a href="#element.set">set</a></code></td>
150         <td>set a value of a variable</td></tr>
151     </table>
152
153     <p>SSI 要素は <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> 以外のモジュールで
154     定義されることもあります。実際、
155     <code><a href="#element.exec">exec</a></code> 要素は
156     <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> で提供されていて、このモジュールが
157     ロードされる場合にのみ利用可能となります。</p>
158
159     <h3><a name="element.config" id="element.config">config 要素</a></h3>
160       <p>次のコマンドは解析の様々な側面を制御します。属性は次の通りです。</p>
161
162       <dl>
163       <dt><code>errmsg</code></dt>
164       <dd>この値が、ドキュメントの解析中にエラーが発生した時に
165       クライアントに送信されるメッセージになります。これは
166       <code class="directive"><a href="#ssierrormsg">SSIErrorMsg</a></code>
167       ディレクティブを上書きします。</dd>
168
169       <dt><code>sizefmt</code></dt>
170       <dd>この値は、ファイルのサイズを表示する際に使用する
171       フォーマットを設定します。値は バイトカウントの
172       <code>bytes</code>か、Kb や Mb を優先的に使用する
173       <code>abbrec</code> (例えば 1024 バイトは "1K" と表示されます)
174       です。</dd>
175
176       <dt><code>timefmt</code></dt>
177       <dd>この値は <code>strftime(3)</code> ライブラリルーチンが
178       日時をプリントする際に用いられます。</dd>
179       </dl>
180      
181
182     <h3><a name="element.echo" id="element.echo">echo 要素</a></h3>
183       <p>このコマンドは以下で定義されている <a href="#includevars">include
184       変数</a> を表示します。変数が設定されていない場合は <code class="directive"><a href="#ssiundefinedecho">SSIUndefinedEcho</a></code> ディレクティブで
185       決定される結果となります。日付はその時点での <code>timefmt</code> に従って
186       表示されます。属性は次の通りです。</p>
187
188       <dl>
189       <dt><code>var</code></dt>
190       <dd>値は表示する変数の名前です。</dd>
191
192       <dt><code>encoding</code></dt>
193       <dd><p>変数を出力する前に、変数中の特別文字をどのようにエンコードするかを
194       指定します。<code>none</code> に設定されていると、エンコードは行なわれません。
195       <code>url</code> に設定されていると、URL エンコード (%-エンコードとも
196       呼ばれています。これはリンク等の URL の使用に適切です) が
197       行なわれます。<code>echo</code> 要素の開始時は、デフォルトは
198       <code>entity</code> に設定されています。これはエンティティエンコード
199       (段落やテキストなどのブロックレベルの HTML エレメントのコンテキストに
200       適しています) を行ないます。これは <code>encoding</code> 属性
201       を加えることで変更できます。変更は次の <code>encoding</code> 属性か、
202       要素の終了まで効力を持ちます。</p>
203
204       <p><code>encoding</code> 属性はエンコードの変更をしたい <code>var</code> 
205       の<em>前に</em> ある必要があることに注意してください。
206       また、ISO-8859-1 エンコーディングで
207       定義されている特別な文字だけがエンコードされます。
208       別の文字のエンコーディングの場合は、このエンコーディングは
209       望みの結果にならないかもしれません。</p>
210
211       <div class="warning">
212         クロスサイトスクリプティングの問題を避けるために、
213         <em>常に</em>ユーザからのデータをエンコードすべきです。
214       </div>
215       </dd>
216       </dl>
217      
218
219     <h3><a name="element.exec" id="element.exec">exec 要素</a></h3>
220       <p><code>exec</code> コマンドは指定されたシェルコマンドや CGI スクリプトを
221       実行します。<code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> がサーバに組み込まれているいなければ
222       なりません。<code class="directive"><a href="../mod/core.html#option">Option</a></code> 
223       <code>IncludesNOEXEC</code> はこのコマンドを無効にします。
224       使用可能な属性は次の通りです。</p>
225
226       <dl>
227       <dt><code>cgi</code></dt>
228       <dd><p>値は (%-エンコードされた) URL を指定します。パスが
229       スラッシュ (/) で始まらないときは、ドキュメントからの
230       相対パスとして扱われます。このパスで参照されているドキュメントは
231       サーバが CGI スクリプトとして扱っていなくても CGI スクリプトとして
232       起動されます。ただし、スクリプトのあるディレクトリでは
233       (<code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
234       や <code class="directive"><a href="../mod/core.html#option">Option</a></code> <code>ExecCGI</code>
235       によって) CGI スクリプトの使用が許可されている必要があります。</p>
236
237       <p>CGI スクリプトには、クライアントからの元々のリクエストの
238       <code>PATH_INFO</code> とクエリー文字列 (<code>QUERY_STRING</code>) が渡されます。
239       これらは URL パスとして特定<em>できない</em>ものです。
240       スクリプトは標準 <a href="mod_cgi.html">CGI</a> 環境に加えて、include 変数を
241       使用することができます。</p>
242
243       <div class="example"><h3>例</h3><p><code>
244         &lt;!--#exec cgi="/cgi-bin/example.cgi" --&gt;
245       </code></p></div>
246
247       <p>スクリプトが、出力の代わりに <code>Location:</code> ヘッダを返すと、
248       HTML のアンカー (訳注:リンク) に変換されます。</p>
249
250       <p><code>exec cgi</code> よりも、
251       <code><a href="#includevirtual">include virtual</a></code>
252       の方を使うようにしてください。特に、CGI への追加の引数を
253       クエリー文字列を使って渡すことは <code>exec cgi</code> は
254       できませんが、<code>include virtual</code> は以下のようにして
255       可能です。</p>
256
257       <div class="example"><p><code>
258         &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
259       </code></p></div>
260       </dd>
261
262       <dt><code>cmd</code></dt>
263       <dd><p>サーバは指定された文字列を <code>/bin/sh</code> を使って
264       実行します。コマンドは通常の CGI 変数に加えて <a href="#includevars">include 変数</a>も使うことができます。</p>
265
266       <p>ほとんどの場合、<code><a href="#includevirtual">#include 
267       virtual</a></code> を使う方が <code>#exec cgi</code> や <code>#exec
268       cmd</code> を使うよりも良いです。前者 (<code>#include virtual</code>)
269       は標準の Apache のサブリクエスト機構を使ってファイルやスクリプトの
270       出力を取り込みます。
271       こちらの方がよくテストされメンテナンスされた方法です。</p>
272
273       <p>さらに、Win32 のようないくつかのプラットフォームや、<a href="../suexec.html">suexec</a> を使っている unix では、
274       <code>exec</code> ディレクティブのコマンドに
275       引数を渡したり、コマンドに空白を入れることはできません。
276       ですから、以下のものは unix の suexec でない設定では動作しますが、
277       Win32 や suexec を使っている unix では期待した結果にはなりません:</p>
278
279       <div class="example"><p><code>
280         &lt;!--#exec cmd="perl /path/to/perlscript arg1 arg2" --&gt;
281       </code></p></div>
282       </dd>
283       </dl>
284      
285
286     <h3><a name="element.fsize" id="element.fsize">fsize 要素</a></h3>
287       <p>このコマンドは指定されたファイルの大きさを <code>sizefmt</code> の
288       書式指定に基づいて出力します。属性は次の通りです。</p>
289
290       <dl>
291       <dt><code>file</code></dt>
292       <dd>値は解析されているドキュメントの存在するディレクトリからの
293       相対パスです。</dd>
294
295       <dt><code>virtual</code></dt>
296       <dd> 値は (% エンコードされた) URL-path です。スラッシュ (/) で
297       始まらないときはドキュメントからの相対パスとして扱われます。
298       CGI の出力のサイズはプリント<em>されません</em>。CGI
299       スクリプト自体のサイズがプリントされることに注意してください。</dd>
300       </dl>
301      
302
303     <h3><a name="element.flastmod" id="element.flastmod">flastmod 要素</a></h3>
304       <p>このコマンドは指定されたファイルの最終修正時刻を
305       <code>timefmt</code> 書式指定に従って表示します。
306       指定可能な属性は <code>fsize</code> コマンドと同じです。</p>
307      
308
309     <h3><a name="element.include" id="element.include">include 要素</a></h3>
310       <p>このコマンドは別の文書やファイルのテキストを解析しているファイルに
311       挿入します。挿入されるファイルはアクセス制御の管理下にあります。
312       解析しているファイルの存在するディレクトリに
313       <a href="core.html#options">Option</a> <code>IncludesNOEXEC</code>
314       が設定されている場合、text MIME タイプ (<code>text/plain</code>,
315       <code>text/html</code> 等) のドキュメントのみインクルードが行なわれます。
316       その他の場合は、クエリー文字列も含め、コマンドで指定された
317       完全な URL を使って普通に CGI スクリプトが呼び出されます。</p>
318
319       <p>属性が文書の位置を指定します。include コマンドに与えられたそれぞれの
320       属性に対して挿入作業が行なわれます。有効な属性は次の通りです。</p>
321
322       <dl>
323       <dt><code>file</code></dt>
324       <dd>値は解析されているドキュメントの存在するディレクトリからの
325       相対パスです。
326       <code>../</code> を含んでいたり、絶対パスを指定したりはできません。
327       ですから、ドキュメントルートの外にあるファイルや、ディレクトリ構造で
328       上位にあるファイルを挿入することはできません。
329       常にこの属性よりは、<code>virtual</code> 属性を使うようにしてください。
330       </dd>
331
332       <dt><code><a id="includevirtual" name="includevirtual">virtual</a></code></dt>
333       <dd><p>値は解析されているドキュメントからの (% エンコードされた) URL
334       です。URL にはスキームやホスト名を含めることはできません。パスと、
335       もしあればクエリー文字列を指定できるだけです。スラッシュ (/) から
336       始まらない場合は、ドキュメントからの相対パスとして扱われます。</p>
337
338       <p>URL は属性から作られ、その URL をクライアントがアクセスしたときに
339       出力される内容が解析後の出力に含められます。ですから、挿入される
340       ファイルは入れ子構造にすることができます。</p>
341
342       <p>指定された URL が CGI プログラムであった場合は、
343       プログラムが実行され、その出力が解析しているファイル中の
344       ディレクティブがあった位置に挿入されます。CGI の url に
345       クエリー URL を入れることもできます。</p>
346
347       <div class="example"><p><code>
348         &lt;!--#include virtual="/cgi-bin/example.cgi?argument=value" --&gt;
349       </code></p></div>
350
351       <p>HTML ドキュメントに CGI プログラムの出力を含める方法としては、
352       <code>include virtual</code> の方が <code>exec cgi</code> よりも
353       好ましい方法です。</p>
354       </dd>
355       </dl>
356      
357
358     <h3><a name="element.printenv" id="element.printenv">printenv 要素</a></h3>
359       <p>これは、存在するすべての変数とその値を表示します。Apache 1.3.12 から、
360       特別な文字は出力される前にエンティティエンコード (詳細は <a href="#element.echo"><code>echo</code></a> 要素を参照)
361       されるようになりました。属性はありません。</p>
362
363       <div class="example"><h3>例</h3><p><code>
364         &lt;!--#printenv --&gt;
365       </code></p></div>
366      
367
368     <h3><a name="element.set" id="element.set">set 要素</a></h3>
369       <p>これは変数の値を設定します。属性は次の通りです。</p>
370
371       <dl>
372       <dt><code>var</code></dt>
373       <dd>設定する変数の名前。</dd>
374
375       <dt><code>value</code></dt>      
376       <dd>変数に設定する値。</dd>
377       </dl>
378
379       <div class="example"><h3>例</h3><p><code>
380         &lt;!--#set var="category" value="help" --&gt;
381       </code></p></div>
382      
383 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
384 <div class="section">
385 <h2><a name="includevars" id="includevars">Include 変数</a></h2>
386     
387
388     <p>標準 CGI 環境の変数に加えて、<code>echo</code> コマンドや、
389     <code>if</code> や <code>elif</code>, それにドキュメントから呼び出される
390     すべてのプログラムから使用できる変数があります。</p>
391
392     <dl>
393       <dt><code>DATE_GMT</code></dt>
394       <dd>グリニッジ標準時による現在時刻。</dd>
395
396       <dt><code>DATE_LOCAL</code></dt>
397       <dd>ローカルの標準時による現在時刻。</dd>
398
399       <dt><code>DOCUMENT_NAME</code></dt>
400       <dd>ユーザがリクエストした (ディレクトリを除いた) ファイル名。</dd>
401
402       <dt><code>DOCUMENT_URI</code></dt>
403       <dd>ユーザがリクエストした (% エンコードされた) URL-path。
404       挿入ファイルが入れ子になっている場合は、解析されている
405      ドキュメントの URL では<em>ない</em>ことに注意してください。</dd>
406
407       <dt><code>LAST_MODIFIED</code></dt>
408       <dd>ユーザがリクエストしたドキュメントの最終修正時刻。</dd>
409
410       <dt><code>QUERY_STRING_UNESCAPED</code></dt>
411       <dd>クエリー文字列がある場合、この変数には (%-デコードされた)
412       クエリー文字列が代入されていて、shell で使用できるように
413       <em>エスケープ</em>されています (<code>&amp;</code>
414       といった特殊文字にはバックスラッシュが直前に置かれます)。</dd>
415     </dl>
416 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
417 <div class="section">
418 <h2><a name="substitution" id="substitution">変数置換</a></h2>
419
420     <p>変数置換はたいていの場合 SSI ディレクティブの引数として妥当な場所にある
421     引用符で囲まれた文字列中で行なわれます。これに該当するものには、
422     <code>config</code>,
423     <code>exec</code>, <code>flastmod</code>, <code>fsize</code>,
424     <code>include</code>, <code>echo</code>, <code>set</code> の
425     各ディレクティブと、条件分岐用のオペレータへの引数があります。
426     ドル記号はバックスラッシュを使うことで使うことができます:</p>
427
428     <div class="example"><p><code>
429       &lt;!--#if expr="$a = \$test" --&gt;
430     </code></p></div>
431
432     <p>変数名としてみなされる文字列の中で変数への参照を置換する必要があるときは、
433     シェルでの変数置換のように、中括弧で括ることで区別することができます:</p>
434
435     <div class="example"><p><code>
436       &lt;!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" --&gt;
437     </code></p></div>
438
439     <p>この例では、<code>REMOTE_HOST</code> が
440     "<code>X</code>" で <code>REQUEST_METHOD</code> が
441     "<code>Y</code>" のときに変数 <code>Zed</code> を "<code>X_Y</code>"
442     に設定します。</p>
443
444     <p>以下の例では、<code>DOCUMENT_URI</code> が <code>/foo/file.html</code>
445     のときに "in foo" を、<code>/bar/file.html</code> のときに "in bar" を、
446     どちらでもないときには "in neither" を表示します。</p>
447
448     <div class="example"><p><code>
449       &lt;!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' --&gt;<br />
450       <span class="indent">
451         in foo<br />
452       </span>
453       &lt;!--#elif expr='"$DOCUMENT_URI" = "/bar/file.html"' --&gt;<br />
454       <span class="indent">
455         in bar<br />
456       </span>
457       &lt;!--#else --&gt;<br />
458       <span class="indent">
459         in neither<br />
460       </span>
461       &lt;!--#endif --&gt;
462     </code></p></div>
463 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
464 <div class="section">
465 <h2><a name="flowctrl" id="flowctrl">フロー制御要素</a></h2>
466     
467
468     <p>基本的なフローコントロール要素は次の通りです。</p>
469
470     <div class="example"><p><code>
471       &lt;!--#if expr="<var>test_condition</var>" --&gt;<br />
472       &lt;!--#elif expr="<var>test_condition</var>" --&gt;<br />
473       &lt;!--#else --&gt;<br />
474       &lt;!--#endif --&gt;
475     </code></p></div>
476
477     <p><code>if</code> 要素はプログラミング言語の
478     if 文と同じように動作します。条件が評価され、結果が真であれば次の
479     <code>elif</code> か <code>else</code> か <code>endif</code>
480     要素までの文字列が出力に挿入されます。</p>
481
482     <p><code>elif</code> や <code>else</code> 文は <var>test_condition</var> 
483     が偽のときにテキストを出力に挿入するために使われます。
484     これらの要素はあってもなくても構いません。</p>
485
486     <p><code>endif</code> 要素は <code>if</code>
487     要素を終了させます。この要素は必須です。</p>
488
489     <p><var>test_condition</var> は以下のどれかです:</p>
490
491     <dl>
492       <dt><code><var>string</var></code></dt>
493       <dd><var>string</var> が空でない場合に真です</dd>
494
495       <dt><code><var>string1</var> = <var>string2</var><br />
496       <var>string1</var> == <var>string2</var><br />
497       <var>string1</var> != <var>string2</var></code></dt>
498
499       <dd><p><var>string1</var> と <var>string2</var> を比較します。
500       <var>string2</var> が <code>/<var>string</var>/</code>
501       という形式であれば、正規表現として比較されます。正規表現は
502       <a href="http://www.pcre.org">PCRE</a> エンジンで実装されていて、
503       <a href="http://www.perl.com">perl 5</a> と同じ構文を使用します。
504       <code>==</code> は単に <code>=</code> の別名で、まったく同じ動作を
505       します。</p>
506
507       <p>正のマッチング (<code>=</code> または <code>==</code>) の場合は、
508       正規表現でグループ分けされたパーツをキャプチャすることができます。
509       キャプチャされた部分は特殊変数 <code>$1</code> .. <code>$9</code>
510       に格納されます。</p>
511
512       <div class="example"><h3>例</h3><p><code>
513         &lt;!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" --&gt;<br />
514         <span class="indent">
515           &lt;!--#set var="session" value="$1" --&gt;<br />
516         </span>
517         &lt;!--#endif --&gt;
518       </code></p></div>
519       </dd>
520
521       <dt><code><var>string1</var> &lt; <var>string2</var><br />
522        <var>string1</var> &lt;= <var>string2</var><br />
523        <var>string1</var> &gt; <var>string2</var><br />
524        <var>string1</var> &gt;= <var>string2</var></code></dt>
525
526       <dd><var>string1</var> と <var>string2</var> を比較します。
527       <em>文字列として</em>比較される (<code>strcmp(3)</code> を使用)
528       ことに注意してください。ですから、文字列 "100" は "20" 
529       よりも小さいことになります。</dd>
530
531       <dt><code>( <var>test_condition</var> )</code></dt>
532       <dd><var>test_condition</var> が真のとき、真</dd>
533
534       <dt><code>! <var>test_condition</var></code></dt>
535       <dd><var>test_condition</var> が偽のとき、真</dd>
536
537       <dt><code><var>test_condition1</var> &amp;&amp;
538         <var>test_condition2</var></code></dt>
539       <dd><var>test_condition1</var> かつ
540       <var>test_condition2</var> が真のとき、真</dd>
541
542       <dt><code><var>test_condition1</var> ||
543         <var>test_condition2</var></code></dt>
544       <dd><var>test_condition1</var> または
545       <var>test_condition2</var> が真のとき、真</dd>
546     </dl>
547
548     <p>"<em>=</em>" と "<em>!=</em>" の方が "<em>&amp;&amp;</em>" より
549     きつく束縛します。"<em>!</em>" の束縛が一番きつくなっています。
550     ですから以下の二つは等価です:</p>
551
552     <div class="example"><p><code>
553       &lt;!--#if expr="$a = test1 &amp;&amp; $b = test2" --&gt;<br />
554       &lt;!--#if expr="($a = test1) &amp;&amp; ($b = test2)" --&gt;
555     </code></p></div>
556
557     <p>真偽値オペレータ <code>&amp;&amp;</code> と <code>||</code>
558     は同じ優先度です。
559     これらのオペレータで一方により強い優先度をつけたい場合には、
560     括弧を使う必要があります。</p>
561
562     <p>変数やオペレータとして認識されないものはすべて文字列として
563     扱われます。文字列は引用符で囲むこともできます: <code>'string'</code>
564     のように。引用符で囲まれていない文字列には空白 (スペースとタブ)
565     を含めることはできません。それらは変数などの句を分離するために
566     使われているからです。複数の文字列が続いているときは、
567     空白を間に入れて一つにくっつけられます。ですから、</p>
568
569     <div class="example"><p><code><var>string1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>string2</var></code> は <code><var>string1</var>&nbsp;<var>string2</var></code> になります。<br />
570       <br />
571       また、<br />
572       <br />
573       <code>'<var>string1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>string2</var>'</code> は <code><var>string1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>string2</var></code>
574       になります。</p></div>
575 </div>
576 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
577 <div class="directive-section"><h2><a name="SSIEndTag" id="SSIEndTag">SSIEndTag</a> <a name="ssiendtag" id="ssiendtag">ディレクティブ</a></h2>
578 <table class="directive">
579 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>include 要素を終了させる文字列</td></tr>
580 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>SSIEndTag <var>tag</var></code></td></tr>
581 <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>SSIEndTag "--&gt;"</code></td></tr>
582 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
583 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Base</td></tr>
584 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_include</td></tr>
585 <tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>2.0.30 以降で利用可能</td></tr>
586 </table>
587     <p>このディレクティブは <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> が探す、
588     include 要素の終了を示す文字列を変更します。</p>
589
590     <div class="example"><h3>例</h3><p><code>
591       SSIEndTag "%&gt;"
592     </code></p></div>
593
594
595 <h3>参照</h3>
596 <ul>
597 <li><code class="directive"><a href="#ssistarttag">SSIStartTag</a></code></li>
598 </ul>
599 </div>
600 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
601 <div class="directive-section"><h2><a name="SSIErrorMsg" id="SSIErrorMsg">SSIErrorMsg</a> <a name="ssierrormsg" id="ssierrormsg">ディレクティブ</a></h2>
602 <table class="directive">
603 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>SSI のエラーがあったときに表示されるエラーメッセージ</td></tr>
604 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>SSIErrorMsg <var>message</var></code></td></tr>
605 <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>SSIErrorMsg "[an error occurred while processing this
606 directive]"</code></td></tr>
607 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess</td></tr>
608 <tr><th><a href="directive-dict.html#Override">上書き:</a></th><td>All</td></tr>
609 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Base</td></tr>
610 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_include</td></tr>
611 <tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>バージョン 2.0.30 以降で使用可能</td></tr>
612 </table>
613     <p><code class="directive">SSIErrorMsg</code> ディレクティブは <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>
614     がエラーが起こったときに表示するメッセージを変更します。プロダクションサーバでは
615     メッセージがユーザに表示されないようにするために
616     デフォルトエラーメッセージを <code>"&lt;!-- Error --&gt;"</code>
617     に変えるというようなことを考えるかもしれません。</p>
618
619     <p>このディレクティブは <code>&lt;!--#config
620     errmsg=<var>message</var> --&gt;</code> 要素と同じ効果になります。</p>
621
622     <div class="example"><h3>例</h3><p><code>
623       SSIErrorMsg "&lt;!-- Error --&gt;"
624     </code></p></div>
625
626 </div>
627 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
628 <div class="directive-section"><h2><a name="SSIStartTag" id="SSIStartTag">SSIStartTag</a> <a name="ssistarttag" id="ssistarttag">ディレクティブ</a></h2>
629 <table class="directive">
630 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>include 要素を開始する文字列</td></tr>
631 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>SSIStartTag <var>tag</var></code></td></tr>
632 <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>SSIStartTag "&lt;!--#"</code></td></tr>
633 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
634 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Base</td></tr>
635 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_include</td></tr>
636 <tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>バージョン 2.0.30 以降で使用可能</td></tr>
637 </table>
638
639     <p>このディレクティブは <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> が探す、include
640     要素の開始を示す文字列を変更します。</p>
641
642     <p>二つのサーバで (もしかすると別々の段階で) ファイルの出力を解析していて、
643     それぞれに違うコマンドを処理させたい、
644     というようなときにこのオプションを使います。</p>
645
646     <div class="example"><h3>例</h3><p><code>
647       SSIStartTag "&lt;%"<br />
648       SSIEndTag   "%&gt;"
649     </code></p></div>
650
651     <p>上の例のように対応する
652     <code class="directive"><a href="#ssiendtag">SSIEndTag</a></code> を併せて使うと、
653     下に示す例のように SSI ディレクティブを使えます:</p>
654
655     <div class="example"><h3>違う開始と終了のタグを使った SSI ディレクティブ</h3><p><code>
656       &lt;%printenv %&gt;
657     </code></p></div>
658
659 <h3>参照</h3>
660 <ul>
661 <li><code class="directive"><a href="#ssiendtag">SSIEndTag</a></code></li>
662 </ul>
663 </div>
664 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
665 <div class="directive-section"><h2><a name="SSITimeFormat" id="SSITimeFormat">SSITimeFormat</a> <a name="ssitimeformat" id="ssitimeformat">ディレクティブ</a></h2>
666 <table class="directive">
667 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>日付けを現す文字列の書式を設定する</td></tr>
668 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>SSITimeFormat <var>formatstring</var></code></td></tr>
669 <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"</code></td></tr>
670 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess</td></tr>
671 <tr><th><a href="directive-dict.html#Override">上書き:</a></th><td>All</td></tr>
672 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Base</td></tr>
673 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_include</td></tr>
674 <tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>2.0.30 以降で使用可能</td></tr>
675 </table>
676 <p>このディレクティブは <code>DATE</code> 環境変数を echo して日付を現す文字列が
677     表示されるときの書式を変更します。<var>formatstring</var> は
678     C 標準ライブラリの <code>strftime(3)</code> と同じ形式です。</p>
679
680     <p>このディレクティブは <code>&lt;!--#config
681     timefmt=<var>formatstring</var> --&gt;</code> 要素と同じ効果になります。</p>
682
683     <div class="example"><h3>例</h3><p><code>
684       SSITimeFormat "%R, %B %d, %Y"
685     </code></p></div>
686
687     <p>上のディレクティブでは、日付は "22:26, June 14, 2002" という
688     形式で表示されます。</p>
689
690 </div>
691 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
692 <div class="directive-section"><h2><a name="SSIUndefinedEcho" id="SSIUndefinedEcho">SSIUndefinedEcho</a> <a name="ssiundefinedecho" id="ssiundefinedecho">ディレクティブ</a></h2>
693 <table class="directive">
694 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>未定義の変数が echo されたときに表示される文字列</td></tr>
695 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>SSIUndefinedEcho <var>string</var></code></td></tr>
696 <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>SSIUndefinedEcho "(none)"</code></td></tr>
697 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
698 <tr><th><a href="directive-dict.html#Override">上書き:</a></th><td>All</td></tr>
699 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Base</td></tr>
700 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_include</td></tr>
701 <tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>2.0.34 以降で利用可能</td></tr>
702 </table>
703     <p>このディレクティブは変数が定義されていないにも関わらず
704     "echo" されたときに <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>
705     が表示する文字列を変更します。</p>
706
707     <div class="example"><h3>例</h3><p><code>
708       SSIUndefinedEcho "&lt;!-- undef --&gt;"
709     </code></p></div>
710
711 </div>
712 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
713 <div class="directive-section"><h2><a name="XBitHack" id="XBitHack">XBitHack</a> <a name="xbithack" id="xbithack">ディレクティブ</a></h2>
714 <table class="directive">
715 <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>実行ビットが設定されたファイルの SSI ディレクティブを
716 解析する</td></tr>
717 <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>XBitHack on|off|full</code></td></tr>
718 <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>XBitHack off</code></td></tr>
719 <tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess</td></tr>
720 <tr><th><a href="directive-dict.html#Override">上書き:</a></th><td>Options</td></tr>
721 <tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Base</td></tr>
722 <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_include</td></tr>
723 </table>
724     <p><code class="directive">XBitHack</code> ディレクティブは通常の HTML
725     ドキュメントの解析を制御します。このディレクティブは MIME タイプ
726     <code>text/html</code> と関連付けられているファイルにのみ影響します。
727     <code class="directive">XBitHack</code> は以下の値をとることができます。</p>
728
729     <dl>
730       <dt><code>off</code></dt>
731       <dd>実行可能ファイルに対して特別な扱いをしません。</dd>
732
733       <dt><code>on</code></dt>
734       <dd>ユーザの実行ビットが設定されている <code>text/html</code>
735       ファイルは全てサーバで解析する html ドキュメントとして扱われます。</dd>
736
737       <dt><code>full</code></dt>
738       <dd><code>on</code> と同様ですが、グループ実行ビットもテストします。
739       もしそれが設定されていれば、返されるファイルの <code>Last-modified</code> の
740       日付をファイルの最終修正時刻にします。それが設定されていないときは、
741       last-modified の日付は送られません。このビットを設定すると、
742       クライアントやプロキシがリクエストをキャッシュできるようになります。
743
744       <div class="note"><strong>注意</strong> 他の CGI を <code>#include</code>
745       するかもしれないものや、各アクセスに対して違う出力を生成する
746       (もしくは後のリクエストで変わるかもしれないもの)
747       すべての SSI スクリプトに対してグループ実行ビットが
748       設定されていないことを確認できない場合は、full は使わない方が良い
749       でしょう。</div>
750       </dd>
751     </dl>
752
753     
754 </div>
755 </div>
756 <div class="bottomlang">
757 <p><span>Available Languages: </span><a href="../en/mod/mod_include.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
758 <a href="../ja/mod/mod_include.html" title="Japanese">&nbsp;ja&nbsp;</a></p>
759 </div><div id="footer">
760 <p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
761 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div>
762 </body></html>