]> granicus.if.org Git - apache/blob - docs/manual/howto/ssi.html.ja.utf8
rebuild
[apache] / docs / manual / howto / ssi.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>Apache チュートリアル: Server Side Includes 入門 - Apache HTTP サーバ バージョン 2.5</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" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
12 <script src="../style/scripts/prettify.min.js" type="text/javascript">
13 </script>
14
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
16 <body id="manual-page"><div id="page-header">
17 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/quickreference.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p>
18 <p class="apache">Apache HTTP サーバ バージョン 2.5</p>
19 <img alt="" src="../images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
21 <div id="path">
22 <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.5</a> &gt; <a href="./">How-To / チュートリアル</a></div><div id="page-content"><div id="preamble"><h1>Apache チュートリアル: Server Side Includes 入門</h1>
23 <div class="toplang">
24 <p><span>翻訳済み言語: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25 <a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
26 <a href="../ja/howto/ssi.html" title="Japanese">&nbsp;ja&nbsp;</a> |
27 <a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
28 </div>
29 <div class="outofdate">この日本語訳はすでに古くなっている
30             可能性があります。
31             最近更新された内容を見るには英語版をご覧下さい。
32         </div>
33
34 <p>サーバサイドインクルードによって、既存の HTML
35 ドキュメントに動的なコンテンツを追加することができます。</p>
36 </div>
37 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">はじめに</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#what">SSI とは ?</a></li>
39 <li><img alt="" src="../images/down.gif" /> <a href="#configuring">SSI を許可するためのサーバの設定</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#basic">基本的な SSI ディレクティブ</a></li>
41 <li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">追加の例</a></li>
42 <li><img alt="" src="../images/down.gif" /> <a href="#config">他に何が設定できるのか ?</a></li>
43 <li><img alt="" src="../images/down.gif" /> <a href="#exec">コマンドの実行</a></li>
44 <li><img alt="" src="../images/down.gif" /> <a href="#advanced">高度な SSI テクニック</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#conclusion">終わりに</a></li>
46 </ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
47 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
48 <div class="section">
49 <h2><a name="related" id="related">はじめに</a></h2>
50  <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code></li><li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li><li><code class="directive"><a href="../mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li></ul></td></tr></table>
51
52     <p>この記事は、通常は単に SSI と呼ばれる Server Side Includes
53     を扱います。この記事においては、サーバでの SSI を許可するための設定と、
54     現在の HTML ページに動的なコンテンツを加えるためのいくつかの基本的な
55     SSI 技術を紹介します。</p>
56
57     <p>記事の後半では、SSI ディレクティブで SSI
58     と共に実行することができる条件文のような
59     幾分高度な事柄について述べています。</p>
60
61 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
62 <div class="section">
63 <h2><a name="what" id="what">SSI とは ?</a></h2>
64
65     <p>SSI (Server Side Includes) は、HTML
66     ページ中に配置されるディレクティブであり、
67     サーバでページを提供する時に評価されます。SSI は、CGI
68     プログラムやその他の動的な技術で全てのページを提供せずに、
69     動的に生成されたコンテンツを現在の HTML ページに加えます。</p>
70
71     <p>どういう場合に SSI を使い、どういう場合にプログラムで
72     ページを完全に生成するかは、ページのうちどの程度が静的であり、
73     ページが提供されるたびに再計算する必要がどの程度あるかで通常は決定します。
74     SSI は現在時刻のような小さい情報を加えるにはうってつけの方法です。
75     しかし、そのページのほとんどの部分が提供時に生成される場合は、
76     他の方法を探す必要があります。</p>
77 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
78 <div class="section">
79 <h2><a name="configuring" id="configuring">SSI を許可するためのサーバの設定</a></h2>
80
81
82     <p>サーバで SSI を許可するには、<code>httpd.conf</code>
83     ファイルまたは <code>.htaccess</code>
84     ファイルに次のディレクティブを指定する必要があります:</p>
85 <div class="example"><p><code>
86         Options +Includes
87 </code></p></div>
88
89     <p>この指定は、ファイルを SSI
90     ディレクティブで解析させることを許可するということを Apache
91     に伝えます。ほとんどの設定ではお互いを上書きできる、複数の
92     <code class="directive"><a href="../mod/core.html#options">Options</a></code> があることに
93     注意してください。おそらく、設定が最後に評価されることを
94     保証されるために、SSI を使用したいディレクトリに <code>Options</code>
95     ディレクティブを適用する必要があるでしょう。</p>
96
97     <p>全てのファイルが SSI
98     ディレクティブで解析されるというわけではありません。
99     どのファイルが解析されるかを Apache に伝える必要があります。
100     これを行なうには二つ方法があります。
101     次のディレクティブを使うことで、例えば <code>.shtml</code>
102     のような特別なファイル拡張子を持つファイルを解析するよう
103     Apache に伝えることができます:</p>
104 <div class="example"><p><code>
105         AddType text/html .shtml<br />
106         AddOutputFilter INCLUDES .shtml
107 </code></p></div>
108
109     <p>この方法の欠点は、もし現在のページに SSI ディレクティブを加えたい場合、
110     それらのディレクティブが実行されるように 
111     <code>.shtml</code> 拡張子にするため、そのページの名前と、
112     そのページへの全てのリンクを変更しなければならないことです。</p>
113
114     <p>もう一つの方法は、<code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>
115     ディレクティブを使用することです:</p>
116 <div class="example"><p><code>
117         XBitHack on
118 </code></p></div>
119
120     <p><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> 
121     は、ファイルの実行ビットが立っている場合、
122     SSI ディレクティブにより解析することを Apache に伝えます。
123     従って、SSI ディレクティブを現在のページに加えるためには、
124     ファイル名を変更しなくてもよく、単に <code>chmod</code>
125     を使用してファイルを実行可能にするだけで済みます。</p>
126 <div class="example"><p><code>
127         chmod +x pagename.html
128 </code></p></div>
129
130     <p>行なうべきではないことに関する短いコメント。時々誰かが、全ての
131     <code>.html</code> ファイルを SSI で解析するよう Apache に伝えれば、
132     わざわざ <code>.shtml</code> というファイル名にする必要がないといって
133     薦めるのを見ることでしょう。こういう人たちは、おそらく
134     <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>
135     について聞いたことがないのでしょう。
136     この方法について注意することは、たとえ SSI
137     ディレクティブを全く含まない場合でも、Apache がクライアントに
138     送る全てのファイルを最後まで読み込ませることになります。
139     この方法はかなり処理を遅くするものであり、良くないアイデアです。</p>
140
141     <p>もちろん、Windows ではそのような実行ビットをセット
142     するようなものはありませんのでオプションが少し制限されています。</p>
143
144     <p>デフォルトの設定では、Apache は SSI ページについて最終変更時刻や
145     コンテンツの長さを HTTP ヘッダに送りません。
146     動的なコンテンツであるため、それらの値を計算するのが難しいからです。
147     このためドキュメントがキャッシュされなくなり、
148     結果としてクライアントの性能が遅くなったように感じさせることになります。
149     これを解決する方法が二つあります:</p>
150
151     <ol>
152       <li><code>XBitHack Full</code> 設定を使用する。
153       この設定により、もともと要求されたファイルの時刻を参照し、
154       読み込まれるファイルの変更時刻を無視して最終変更時刻を決定するよう
155       Apache に伝えます。</li>
156
157       <li><a href="../mod/mod_expires.html">mod_expires</a>
158       で提供されているディレクティブを使用して、
159       ファイルが無効になる時刻を明示します。これにより、
160       ブラウザとプロキシにキャッシュが有効であることを通知します。</li>
161     </ol>
162 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
163 <div class="section">
164 <h2><a name="basic" id="basic">基本的な SSI ディレクティブ</a></h2>
165
166     <p>SSI ディレクティブは以下の文法で記述します:</p>
167 <div class="example"><p><code>
168         &lt;!--#element attribute=value attribute=value ... --&gt;
169 </code></p></div>
170
171     <p>HTML のコメントのような書式をしているので、もし SSI
172     を正しく動作可能にしなければ、ブラウザはそれを無視するでしょう。
173     しかし、HTML ソース中では見えます。もし SSI を正しく設定したなら、
174     ディレクティブはその結果と置き換えられます。</p>
175
176     <p>element はたくさんあるものから一つ指定することができます。
177     指定できるものの大多数については、次回もう少し詳しく説明します。
178     ここでは、SSI で行なうことができる例をいくつか示します。</p>
179
180 <h3><a name="todaysdate" id="todaysdate">今日の日付</a></h3>
181
182 <div class="example"><p><code>
183         &lt;!--#echo var="DATE_LOCAL" --&gt;
184 </code></p></div>
185
186     <p><code>echo</code> 要素は単に変数の値を出力します。
187     CGI プログラムに利用可能な環境変数の全ての
188     セットを含む多くの標準変数があります。また、<code>set</code>
189     要素を用いることで、独自の変数を定義することができます。
190     </p>
191
192     <p>出力される日付の書式が好きではない場合、その書式を修正するために、
193     <code>config</code> 要素に <code>timefmt</code>
194     属性を使用することができます。</p>
195
196 <div class="example"><p><code>
197         &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
198         Today is &lt;!--#echo var="DATE_LOCAL" --&gt;
199 </code></p></div>
200
201
202 <h3><a name="lastmodified" id="lastmodified">ファイルの変更日</a></h3>
203
204 <div class="example"><p><code>
205         This document last modified &lt;!--#flastmod file="index.html" --&gt;
206 </code></p></div>
207
208     <p>この要素も <code>timefmt</code>
209     フォーマットの設定に従います。</p>
210
211
212 <h3><a name="cgi" id="cgi">CGI プログラムの結果を取り込む</a></h3>
213
214     <p>これは、全ての人のお気に入りである ``ヒットカウンタ'' のような
215     CGI プログラムの結果を出力する SSI
216     のより一般的な使用のうちの一つです。</p>
217
218 <div class="example"><p><code>
219         &lt;!--#include virtual="/cgi-bin/counter.pl" --&gt;
220 </code></p></div>
221
222
223 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
224 <div class="section">
225 <h2><a name="additionalexamples" id="additionalexamples">追加の例</a></h2>
226
227
228     <p>以下は、SSI を使用して HTML
229     ドキュメントにおいてできることのいくつかの特別な例です。</p>
230
231 <h3><a name="docmodified" id="docmodified">いつこのドキュメントは修正されたのか
232 ?</a></h3>
233
234     <p>先に、ドキュメントが最後に変更されたのはいつかを
235     ユーザに通知するために SSI を使用することができることを述べました。
236     しかしながら、実際の方法は、いくぶん問題のままにしておきました。
237     HTML ドキュメントに配置された次のコードは、ページにそのような
238     タイムスタンプを入れるでしょう。もちろん、上述のように、
239     SSI を正しく動作可能にしておく必要があります。</p>
240 <div class="example"><p><code>
241         &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
242         This file last modified &lt;!--#flastmod file="ssi.shtml" --&gt;
243 </code></p></div>
244
245     <p>もちろん、<code>ssi.shtml</code>
246     の部分を実際の当該ファイル名と置き換える必要があります。
247     もし、あらゆるファイルに張ることができる一般的なコードを探しているなら、
248     これは不便であるかもしれません。おそらくその場合は、
249     そうする代わりに変数 <code>LAST_MODIFIED</code>
250     を使用したいと考えるでしょう:</p>
251 <div class="example"><p><code>
252         &lt;!--#config timefmt="%D" --&gt;<br />
253         This file last modified &lt;!--#echo var="LAST_MODIFIED" --&gt;
254 </code></p></div>
255
256     <p><code>timefmt</code>
257     書式についてのより詳細については、お好みの検索サイトに行き、
258     <code>strftime</code> で検索してみてください。文法は同じです。</p>
259
260
261 <h3><a name="standard-footer" id="standard-footer">標準のフッタを挿入する</a></h3>
262
263
264     <p>もし数ページを超えるページを持つサイトを管理しているならば、
265     全ページに対して変項を行なうことが本当に苦痛となり得ることが
266     分かるでしょう。全てのページに渡ってある種の標準的な外観を
267     維持しようとしているならば特にそうでしょう。</p>
268
269     <p>ヘッダやフッタ用の挿入用ファイルを使用することで、
270     このような更新にかかる負担を減らすことができます。
271     一つのフッタファイルを作成し、それを <code>include</code>
272     SSI コマンドで各ページに入れるだけで済みます。<code>include</code>
273     要素は、<code>file</code> 属性または <code>virtual</code>
274     属性のいずれかを使用してどのファイルを挿入するかを決めることができます。
275     <code>file</code> 属性は、<em>カレントディレクトリからの相対パスで示された
276     </em>ファイルパスです。
277     それは / で始まる絶対ファイルパスにはできず、また、そのパスの一部に ../
278     を含むことができないことを意味します。<code>virtual</code>
279     属性は、おそらくより便利だと思いますが、提供するドキュメントからの相対
280     URL で指定すべきです。それは / で始めることができますが、
281     提供するファイルと同じサーバ上に存在しなくてはなりません。</p>
282 <div class="example"><p><code>
283         &lt;!--#include virtual="/footer.html" --&gt;
284 </code></p></div>
285
286     <p>私は最後の二つを組み合わせて、<code>LAST_MODIFIED</code>
287     ディレクティブをフッタファイルの中に置くことがよくあります。
288     SSI ディレクティブは、挿入用のファイルに含ませたり、
289     挿入ファイルのネストをしたりすることができます。すなわち、
290     挿入用のファイルは他のファイルを再帰的に挿入することができます。</p>
291
292
293 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
294 <div class="section">
295 <h2><a name="config" id="config">他に何が設定できるのか ?</a></h2>
296
297
298     <p>時刻書式を <code>config</code> で設定できることに加えて、
299     更に二つ <code>config</code> で設定することができます。</p>
300
301     <p>通常、SSI ディレクティブで何かがうまくいかないときは、
302     次のメッセージが出力されます。</p>
303 <div class="example"><p><code>
304         [an error occurred while processing this directive]
305 </code></p></div>
306
307     <p>このメッセージを他のものにしたい場合、<code>config</code>
308     要素の <code>errmsg</code> 属性で変更することができます:</p>
309 <div class="example"><p><code>
310         &lt;!--#config errmsg="[It appears that you don't know how to use SSI]" --&gt;
311 </code></p></div>
312
313     <p>おそらく、エンドユーザはこのメッセージを決して見ることはありません。
314     なぜなら、そのサイトが生きた状態になる前に SSI ディレクティブに関する
315     全ての問題を解決しているはずだからです。(そうですよね?)</p>
316
317     <p>そして、<code>config</code> において <code>sizefmt</code>
318     属性を使用することで、
319     返されるファイルサイズの書式を設定することができます。
320     バイト数には <code>bytes</code> を、適当に Kb や Mb
321     に短縮させるには <code>abbrev</code> を指定することができます。</p>
322     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
323 <div class="section">
324 <h2><a name="exec" id="exec">コマンドの実行</a></h2>
325     
326
327     <p>今後数ヶ月のうちに、小さな CGI プログラムと SSI
328     を使用する記事を出したいと考えています。ここではそれとは別に、
329     <code>exec</code> 要素によって行なうことができることを示します。
330     SSI にシェル (正確には <code>/bin/sh</code>。Win32 ならば DOS シェル)
331     を使用してコマンドを実行させることができます。
332     下記の例では、ディレクトリリスト出力を行ないます。</p>
333 <div class="example"><p><code>
334         &lt;pre&gt;<br />
335         &lt;!--#exec cmd="ls" --&gt;<br />
336         &lt;/pre&gt;
337 </code></p></div>
338
339     <p>Windows 上では、</p>
340 <div class="example"><p><code>
341         &lt;pre&gt;<br />
342         &lt;!--#exec cmd="dir" --&gt;<br />
343         &lt;/pre&gt;
344 </code></p></div>
345
346     <p>Windows 上では、このディレクティブによっていくつかの奇妙な
347     書式に気づくでしょう。なぜなら <code>dir</code> の出力が文字列
348     ``&lt;<code>dir</code>&gt;'' を含み、ブラウザを混乱させるからです。</p>
349
350     <p>この機能は非常に危険であり、どんなコードでも <code>exec</code>
351     タグに埋め込まれてしまえば実行することに注意してください。例えば 
352     `` ゲストブック '' のように、もし、
353     ユーザがページの内容を編集できる状況にあるならば、
354     この機能を確実に抑制してください。<code>Options</code>
355     ディレクティブの <code>IncludesNOEXEC</code> 引数を指定することで、
356     SSI は許可するけれど <code>exec</code>
357     機能は許可しないようにすることができます。</p>
358     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
359 <div class="section">
360 <h2><a name="advanced" id="advanced">高度な SSI テクニック</a></h2>
361
362
363     <p>コンテンツを出力することに加え、Apache SSI は変数を設定し、
364     そして比較と条件分岐にその変数を使用できる機能を提供しています。
365     </p>
366
367 <h3><a name="caveat" id="caveat">警告</a></h3>
368
369     <p>この記事で述べた大部分の機能は、Apache 1.2
370     以降を使用している場合のみ利用可能です。もちろん、もし Apache 1.2
371     以降を使用してない場合、直ちにアップグレードする必要があります。
372     さぁ、今それを行ないなさい。それまで待っています。</p>
373
374
375 <h3><a name="variables" id="variables">変数を設定する</a></h3>
376
377     <p><code>set</code> ディレクティブを使用して、
378     後で使用するために変数を設定することができます。
379     これは後の説明で必要になるので、ここでそれについて述べています。
380     文法は以下のとおりです:</p>
381 <div class="example"><p><code>
382         &lt;!--#set var="name" value="Rich" --&gt;
383 </code></p></div>
384
385     <p>このように単純に文字どおりに設定することに加え、
386     <a href="../env.html">環境変数</a>や上記の変数
387     (例えば <code>LAST_MODIFIED</code> のような)
388     を含む他のあらゆる変数を値を設定するのに使用することができます。
389     変数名の前にドル記号 ($) を使用することで、
390     それがリテラル文字列ではなくて変数であることを示します。</p>
391 <div class="example"><p><code>
392         &lt;!--#set var="modified" value="$LAST_MODIFIED" --&gt;
393 </code></p></div>
394
395     <p>ドル記号 ($) を文字として変数の値に入れるには、
396     バックスラッシュによってドル記号をエスケープする必要があります。</p>
397 <div class="example"><p><code>
398         &lt;!--#set var="cost" value="\$100" --&gt;
399 </code></p></div>
400
401     <p>最後になりますが、長い文字列の中に変数を置きたい場合で、
402     変数名が他の文字とぶつかる可能性があり、
403     それらの文字について混乱してしまう場合、この混乱を取り除くため、
404     変数名を中括弧で囲むことができます
405     (これについての良い例を示すのは難しいのですが、
406     おそらく分かっていただけるでしょう)。
407     </p>
408 <div class="example"><p><code>
409         &lt;!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --&gt;
410 </code></p></div>
411
412
413 <h3><a name="conditional" id="conditional">条件式</a></h3>
414
415
416     <p>さて、変数を持っていて、
417     それらの値を設定して比較することができるのですから、
418     条件を表すためにそれらを使用することができます。これにより
419     SSI はある種の小さなプログラミング言語になっています。
420     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> は条件を表現するために <code>if</code>,
421     <code>elif</code>, <code>else</code>, <code>endif</code>
422     構造を提供しています。これによって、
423     一つの実際のページから複数の論理ページを効果的に生成することができます。</p>
424
425     <p>条件構造は以下のとおりです:</p>
426 <div class="example"><p><code>
427     &lt;!--#if expr="test_condition" --&gt;<br />
428     &lt;!--#elif expr="test_condition" --&gt;<br />
429     &lt;!--#else --&gt;<br />
430     &lt;!--#endif --&gt;
431 </code></p></div>
432
433     <p><em>test_condition</em>
434     はあらゆる種類の論理的比較をすることができます。
435     値を比較したり、その値が ``真'' かどうかを評価します
436     (空でないなら与えられた文字列は真です)。
437     利用可能な比較演算子の全てのリストについては、
438     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> ドキュメンテーションを参照してください。
439     ここでは、この構造をどう使用するかの例をいくつか示します。</p>
440
441     <p>設定ファイルで次の行を記述します:</p>
442 <div class="example"><p><code>
443         BrowserMatchNoCase macintosh Mac<br />
444         BrowserMatchNoCase MSIE InternetExplorer
445 </code></p></div>
446
447     <p>これはクライアントが Macintosh
448     上でインターネットエクスプローラが動いている場合、環境変数
449     ``Mac'' と ``InternetExplorer'' を真と設定します。</p>
450
451     <p>次に、SSI が可能になったドキュメントで以下を行ないます:
452     </p>
453 <div class="example"><p><code>
454         &lt;!--#if expr="${Mac} &amp;&amp; ${InternetExplorer}" --&gt;<br />
455         Apologetic text goes here<br />
456         &lt;!--#else --&gt;<br />
457         Cool JavaScript code goes here<br />
458         &lt;!--#endif --&gt;
459 </code></p></div>
460
461     <p>Mac 上の IE に対して何か思うところがあるわけでありません。
462     他では実行できているいくつかの JavaScript を Mac 上の IE
463     で実行させるのに、先週数時間苦労したというだけのことです。
464     上の例はその暫定的な対処方法です。</p>
465
466     <p>他のどんな変数 (あなたが定義するもの、
467     または普通の環境変数のいずれか) も、条件文に使用することができます。
468     Apache は <code>SetEnvIf</code> ディレクティブや他の関連
469     ディレクティブを使用して環境変数を設定することができます。
470     この機能により、CGI
471     に頼ることなくかなり複雑な動的なことをさせることができます。</p>
472
473 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
474 <div class="section">
475 <h2><a name="conclusion" id="conclusion">終わりに</a></h2>
476
477     <p>SSI は確かに CGI
478     や動的なウェブページを生成する他の技術に代わるものではありません。
479     しかし、たくさんの余分な作業をせずに、
480     少量の動的なコンテンツを加えるにはすぐれた方法です。</p>
481 </div></div>
482 <div class="bottomlang">
483 <p><span>翻訳済み言語: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
484 <a href="../fr/howto/ssi.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
485 <a href="../ja/howto/ssi.html" title="Japanese">&nbsp;ja&nbsp;</a> |
486 <a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
487 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
488 <script type="text/javascript"><!--//--><![CDATA[//><!--
489 var comments_shortname = 'httpd';
490 var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/ssi.html';
491 (function(w, d) {
492     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
493         d.write('<div id="comments_thread"><\/div>');
494         var s = d.createElement('script');
495         s.type = 'text/javascript';
496         s.async = true;
497         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
498         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
499     }
500     else {
501         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
502     }
503 })(window, document);
504 //--><!]]></script></div><div id="footer">
505 <p class="apache">Copyright 2014 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p>
506 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/quickreference.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
507 if (typeof(prettyPrint) !== 'undefined') {
508     prettyPrint();
509 }
510 //--><!]]></script>
511 </body></html>