]> granicus.if.org Git - apache/blob - docs/manual/howto/ssi.html.fr
Update copyright to 2011
[apache] / docs / manual / howto / ssi.html.fr
1 <?xml version="1.0" encoding="ISO-8859-1"?>
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="fr" xml:lang="fr"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"
9 (Server Side Includes - SSI) - Serveur Apache HTTP</title>
10 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
11 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
12 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
13 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
14 <body id="manual-page"><div id="page-header">
15 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
16 <p class="apache">Serveur Apache HTTP Version 2.3</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/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"
21 (Server Side Includes - SSI)</h1>
22 <div class="toplang">
23 <p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
24 <a href="../fr/howto/ssi.html" title="Français">&nbsp;fr&nbsp;</a> |
25 <a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
26 <a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
27 </div>
28
29 <p>Les SSI permettent d'ajouter du contenu dynamique à des documents
30 HTML préexistants.</p>
31 </div>
32 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introduction</a></li>
33 <li><img alt="" src="../images/down.gif" /> <a href="#what">Qu'est-ce que SSI ?</a></li>
34 <li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurer votre serveur pour permettre les SSI</a></li>
35 <li><img alt="" src="../images/down.gif" /> <a href="#basic">Directives SSI de base</a></li>
36 <li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Exemples additionnels</a></li>
37 <li><img alt="" src="../images/down.gif" /> <a href="#config">Que puis-je configurer d'autre ?</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#exec">Exécution de commandes</a></li>
39 <li><img alt="" src="../images/down.gif" /> <a href="#advanced">Techniques SSI avancées</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusion</a></li>
41 </ul></div>
42 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
43 <div class="section">
44 <h2><a name="related" id="related">Introduction</a></h2>
45  <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</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>
46
47     <p>Cet article traite des Inclusions Côté Serveur (Server Side
48     Includes), plus communément appelés SSI. Vous trouverez ici la
49     manière de configurer votre serveur pour permettre les SSI, ainsi
50     qu'une introduction à quelques techniques SSI de base permettant
51     d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p>
52
53     <p>La dernière partie de cet article sera consacrée aux
54     configurations SSI plus avancées, telles que les expressions
55     conditionnelles dans les directives SSI.</p>
56
57 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
58 <div class="section">
59 <h2><a name="what" id="what">Qu'est-ce que SSI ?</a></h2>
60
61     <p>SSI (Server Side Includes) est constitué de directives placées dans
62     des pages HTML, et évaluées par le serveur au moment où les pages
63     sont servies. Elles vous permettent d'ajouter du contenu généré
64     dynamiquement à une page HTML préexistante, sans avoir à servir la
65     page entière via un programme CGI, ou toute autre technologie de
66     contenu dynamique.</p>
67
68     <p>Le choix entre l'utilisation des SSI et la génération entière de
69     la page par un programme quelconque, est en général dicté par la
70     proportion de contenu statique et de contenu devant être généré
71     chaque fois que la page est servie. SSI est idéal pour ajouter de
72     petites quantités d'information, comme l'heure courante. Mais si la
73     plus grande partie de votre page est générée au moment où elle est
74     servie, vous devez vous tourner vers une autre solution.</p>
75 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
76 <div class="section">
77 <h2><a name="configuring" id="configuring">Configurer votre serveur pour permettre les SSI</a></h2>
78
79
80     <p>Pour permettre l'utilisation des SSI sur votre serveur, vous
81     devez ajouter la directive suivante dans votre fichier
82     <code>httpd.conf</code>, ou dans un fichier <code>.htaccess</code>
83     :</p>
84 <div class="example"><p><code>
85         Options +Includes
86 </code></p></div>
87
88     <p>Cette directive indique à Apache que vous désirez permettre la
89     recherche de directives SSI lors de l'interprétation des fichiers.
90     Notez cependant que la plupart des configurations contiennent de
91     nombreuses directives <code class="directive"><a href="../mod/core.html#options">Options</a></code>
92     qui peuvent s'écraser les unes les autres. Vous devrez probablement
93     appliquer ces directives <code>Options</code> au répertoire
94     spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
95     qu'elles y seront bien activées.</p>
96
97     <p>Tout fichier ne fera cependant pas l'objet de recherche de
98     directives SSI. Vous devez indiquer à Apache quels fichiers seront
99     concernés. Vous pouvez y parvenir en indiquant une extension, comme
100     <code>.shtml</code>, à l'aide des directives suivantes :</p>
101 <div class="example"><p><code>
102         AddType text/html .shtml<br />
103         AddOutputFilter INCLUDES .shtml
104 </code></p></div>
105
106     <p>Un des désavantages de cette approche réside dans le fait que si
107     vous voulez ajouter des directives SSI à une page préexistante, vous
108     devrez changer le nom de cette page, et donc tout lien qui la
109     contient, de façon à ce qu'elle possède l'extension
110     <code>.shtml</code>, condition nécessaire pour que les directives
111     SSI qu'elle contient soient traitées.</p>
112
113     <p>Une autre méthode consiste à utiliser la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> :</p>
114 <div class="example"><p><code>
115         XBitHack on
116 </code></p></div>
117
118     <p>La directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>
119     indique à Apache qu'il doit rechercher des directivves SSI dans les
120     fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus
121     nécessaire de changer le nom du fichier pour ajouter des directives
122     SSI à une page préexistante ; vous devez simplement attribuer les
123     droits d'exécution au fichier à l'aide de <code>chmod</code>.</p>
124 <div class="example"><p><code>
125         chmod +x pagename.html
126 </code></p></div>
127
128     <p>Un bref commentaire sur ce qu'il ne faut pas faire. Certaines
129     personnes peuvent vous conseiller de tout simplement indiquer à
130     Apache de rechercher des directives SSI dans tous les fichiers
131     <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de
132     fichiers avec extension <code>.shtml</code>. Ils n'ont probablement
133     pas entendu parler de la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. En effet, vous devez
134     garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher
135     des directives SSI dans chaque fichier qu'il sert, même s'il n'en
136     contient aucune. Ce n'est donc pas une bonne idée car les
137     performances peuvent en être sensiblement affectées.</p>
138
139     <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à
140     positionner, ce qui limite un peu vos choix.</p>
141
142     <p>Dans sa configuration par défaut, Apache n'envoie pas la date de
143     dernière modification ou les en-têtes HTTP relatifs à la taille des
144     contenus dans les pages SSI, car ses valeurs sont difficiles à
145     calculer pour les contenus dynamiques. Ceci peut induire une
146     impression de diminution des performances côté client, en empêchant
147     la mise en cache de votre document. Il existe deux méthodes pour
148     résoudre ce problème :</p>
149
150     <ol>
151       <li>Utilisez la configuration <code>XBitHack Full</code>. Elle
152       indique à Apache de déterminer la date de dernière modification en
153       ne regardant que la date du fichier à l'origine de la requête,
154       tout en ignorant la date de modification de tout fichier inclus.</li>
155
156       <li>Utilisez les directives fournies par le module
157       <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> pour définir de manière explicite la
158       date d'expiration de vos fichiers, laissant par la-même
159       aux navigateurs et aux mandataires le soin de déterminer s'il est
160       opportun ou non de les mettre en cache.</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">Directives SSI de base</a></h2>
165
166     <p>Les directives SSI adoptent la syntaxe suivante :</p>
167 <div class="example"><p><code>
168         &lt;!--#élément attribut=valeur attribut=valeur ... --&gt;
169 </code></p></div>
170
171     <p>Le format d'une directive SSI étant similaire à celui d'un
172     commentaire HTML, si vous n'avez pas activé correctement SSI, le
173     navigateur l'ignorera, mais elle sera encore visible dans le source
174     HTML. Si SSI est correctement configuré, la directive sera remplacée
175     par ses résultats.</p>
176
177     <p>"élément" peut prendre de nombreuses formes, et nous décrirons
178     plus précisément la plupart d'entre eux dans la prochaine version de
179     ce document. Pour le moment, voici quelques exemples de ce que vous
180     pouvez faire avec SSI.</p>
181
182 <h3><a name="todaysdate" id="todaysdate">La date courante</a></h3>
183
184 <div class="example"><p><code>
185         &lt;!--#echo var="DATE_LOCAL" --&gt;
186 </code></p></div>
187
188     <p>L'élément <code>echo</code> permet d'afficher la valeur d'une
189     variable. Il existe un grand nombre de variables standards, y
190     compris l'ensemble des variables d'environnement disponibles pour
191     les programmes CGI. De plus, vous pouvez définir vos propres
192     variables à l'aide de l'élément <code>set</code>.</p>
193
194     <p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous
195     pouvez utiliser l'élément <code>config</code> avec un attribut
196     <code>timefmt</code>, pour le modifier.</p>
197
198 <div class="example"><p><code>
199         &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
200         Today is &lt;!--#echo var="DATE_LOCAL" --&gt;
201 </code></p></div>
202
203
204 <h3><a name="lastmodified" id="lastmodified">Date de modification du fichier</a></h3>
205
206 <div class="example"><p><code>
207         Dernière modification du document &lt;!--#flastmod file="index.html" --&gt;
208 </code></p></div>
209
210     <p>Le format peut là aussi être modifié à l'aide de l'attribut
211     <code>timefmt</code>.</p>
212
213
214 <h3><a name="cgi" id="cgi">Inclusion des résultats d'un programme CGI</a></h3>
215
216     <p>C'est le cas le plus courant d'utilisation des SSI - afficher les
217     résultats d'un programme CGI, comme l'universellement adoré
218     "compteur d'accès".</p>
219
220 <div class="example"><p><code>
221         &lt;!--#include virtual="/cgi-bin/counter.pl" --&gt;
222 </code></p></div>
223
224
225 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
226 <div class="section">
227 <h2><a name="additionalexamples" id="additionalexamples">Exemples additionnels</a></h2>
228
229
230     <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de
231     ce que vous pouvez faire de vos documents HTML avec SSI.</p>
232
233 <h3><a name="docmodified" id="docmodified">Quand ce document a-t-il été modifié ?</a></h3>
234
235     <p>Nous avons mentionné plus haut que vous pouviez utiliser SSI pour
236     informer l'utilisateur de la date de dernière modification du
237     document. Cependant, la méthode pour y parvenir n'a pas été vraiment
238     abordée. Placé dans votre document HTML, le code suivant va insérer
239     un repère de temps dans votre page. Bien entendu, SSI devra avoir
240     été correctement activé, comme décrit plus haut.</p>
241 <div class="example"><p><code>
242         &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
243         Dernière modification du fichier &lt;!--#flastmod file="ssi.shtml" --&gt;
244 </code></p></div>
245
246     <p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> par le
247     nom du fichier auquel vous faites référence. Ceci ne conviendra pas
248     si vous recherchez un morceau de code générique que vous pourrez
249     insérer dans tout fichier ; dans ce cas, il est préférable
250     d'utiliser la variable <code>LAST_MODIFIED</code> :</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>Pour plus de détails sur le format <code>timefmt</code>, tapez
257     <code>strftime</code> dans votre moteur de recherche préferé. La
258     syntaxe est identique.</p>
259
260
261 <h3><a name="standard-footer" id="standard-footer">Inclusion d'un pied de page standard</a></h3>
262
263
264     <p>Si le site que vous gérez comporte plus que quelques pages, vous
265     allez vite vous apercevoir qu'effectuer des modifications sur toutes
266     ces pages peut devenir très contraignant, en particulier si vous
267     voulez qu'elles conservent un aspect homogène.</p>
268
269     <p>Inclure un fichier pour un en-tête et/ou un pied de page peut
270     simplifier cette corvée de mises à jour. Il vous suffit de
271     confectionner un fichier de pied de page, et de l'inclure dans
272     chaque page à l'aide de l'élément SSI <code>include</code>. Pour
273     définir le fichier à inclure, l'élément <code>include</code> peut
274     utiliser soit l'attribut <code>file</code>, soit l'attribut
275     <code>virtual</code>. L'attribut <code>file</code> est un chemin de
276     fichier <em>relatif au répertoire courant</em>. C'est à dire qu'il
277     ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni
278     comporter "../" dans son chemin. L'attribut <code>virtual</code> est
279     probablement plus commode, et peut spécifier une URL relative au
280     document servi. Elle peut commencer par un /, mais le fichier inclus
281     et le fichier servi doivent résider sur le même serveur.</p>
282 <div class="example"><p><code>
283         &lt;!--#include virtual="/footer.html" --&gt;
284 </code></p></div>
285
286     <p>Je combinerai souvent ces deux derniers points, en ajoutant une
287     directive <code>LAST_MODIFIED</code> dans un fichier de pied de page
288     destiné à être inclus. Le fichier inclus peut contenir des
289     directives SSI, et les inclusions peuvent être imbriquées - à
290     savoir, le fichier inclus peut inclure un autre fichier, etc...</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">Que puis-je configurer d'autre ?</a></h2>
296
297
298     <p>En plus du format de date, vous pouvez utiliser l'élément
299     <code>config</code> pour configurer deux autres choses.</p>
300
301     <p>En général, lorsque quelque chose se passe mal avec votre
302     directive SSI, vous recevez le message :</p>
303 <div class="example"><p><code>
304         [an error occurred while processing this directive]
305 </code></p></div>
306
307     <p>Pour modifier ce message, vous pouvez utiliser l'attribut
308     <code>errmsg</code> avec l'élément <code>config</code> :</p>
309 <div class="example"><p><code>
310         &lt;!--#config errmsg="[Il semblerait que vous ne sachiez pas
311         utiliser les SSI]" --&gt;
312 </code></p></div>
313
314     <p>Il est cependant probable que les utilisateurs finaux ne voient
315     jamais ce message, car vous aurez résolu tous les problèmes issus de
316     vos directives SSI avant que votre site ne soit mis en production.
317     (N'est-ce pas ?)</p>
318
319     <p>Vous pouvez aussi modifier le format sous lequel les tailles de
320     fichiers sont affichées à l'aide de l'attribut <code>sizefmt</code>.
321     Vous pouvez spécifier <code>bytes</code> pour un affichage en
322     octets, ou <code>abbrev</code> pour un affichage plus concis en Ko
323     ou Mo, selon le cas.</p>
324     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
325 <div class="section">
326 <h2><a name="exec" id="exec">Exécution de commandes</a></h2>
327     
328
329     <p>J'ai pour projet, dans les prochains mois, d'écrire un article à
330     propos de l'utilisation des SSI avec des petits programmes CGI. Pour
331     l'instant, voici ce que vous pouvez faire avec l'élément
332     <code>exec</code>. Vous pouvez vraiment faire exécuter une commande
333     par SSI en utilisant le shell (<code>/bin/sh</code>, pour être plus
334     précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce
335     qui suit vous permet d'afficher le contenu d'un répertoire.</p>
336 <div class="example"><p><code>
337         &lt;pre&gt;<br />
338         &lt;!--#exec cmd="ls" --&gt;<br />
339         &lt;/pre&gt;
340 </code></p></div>
341
342     <p>ou, sous Windows</p>
343 <div class="example"><p><code>
344         &lt;pre&gt;<br />
345         &lt;!--#exec cmd="dir" --&gt;<br />
346         &lt;/pre&gt;
347 </code></p></div>
348
349     <p>Vous noterez probablement l'étrange formatage provoqué par cette
350     directive sous Windows, car la sortie de <code>dir</code> contient
351     la chaîne  de caractères "&lt;<code>dir</code>&gt;", ce qui trompe le
352     navigateur.</p>
353
354     <p>Notez que cette fonctionnalité est très dangereuse, car elle va
355     permettre d'exécuter tout code associé à l'élément
356     <code>exec</code>. Si vous êtes dans la situation où les
357     utilisateurs peuvent éditer le contenu de vos pages web, dans le cas
358     d'un "livre d'or" par exemple, assurez-vous de désactiver cette
359     fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver
360     la fonctionnalité <code>exec</code> à l'aide de l'argument
361     <code>IncludesNOEXEC</code> de la directive
362     <code>Options</code>.</p>
363     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
364 <div class="section">
365 <h2><a name="advanced" id="advanced">Techniques SSI avancées</a></h2>
366
367
368     <p>Outre l'affichage de contenu, les SSI d'Apache vous permettent de
369     définir des variables, et de les utiliser dans des comparaisons et
370     des conditions.</p>
371
372 <h3><a name="variables" id="variables">Définition de variables</a></h3>
373
374     <p>Avec l'élément <code>set</code>, vous pouvez définir des
375     variables pour un usage ultérieur. Comme nous en aurons besoin plus
376     loin, nous allons en parler tout de suite. La syntaxe se présente
377     comme suit :</p>
378 <div class="example"><p><code>
379         &lt;!--#set var="name" value="Rich" --&gt;
380 </code></p></div>
381
382     <p>Pour affecter une valeur à vos variables, en plus de la
383     définition littérale de l'exemple ci-dessus, vous pouvez utiliser
384     une autre variable, y compris les <a href="../env.html">variables d'environnement</a>, ou les variables
385     décrites plus haut (comme <code>LAST_MODIFIED</code> par exemple).
386     Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous
387     devez utiliser le symbole dollar ($) devant le nom de la
388     variable.</p>
389
390     <div class="example"><p><code> &lt;!--#set var="modified" value="$LAST_MODIFIED" --&gt;
391     </code></p></div>
392
393     <p>Pour insérer un caractère $ dans la valeur de votre variable,
394     vous devez l'échapper à l'aide d'un backslash.</p>
395 <div class="example"><p><code>
396         &lt;!--#set var="cost" value="\$100" --&gt;
397 </code></p></div>
398
399     <p>Enfin, si vous voulez insérer une variable dans une chaîne, et
400     s'il y a une chance pour que le nom de la variable se confonde avec
401     le reste de la chaîne, vous pouvez l'entourer d'accolades pour
402     eviter toute confusion (Il est difficile de trouver un bon exemple
403     pour illustrer ceci, mais j'espère que vous comprendrez).</p>
404 <div class="example"><p><code>
405         &lt;!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --&gt;
406 </code></p></div>
407
408
409 <h3><a name="conditional" id="conditional">Expressions conditionnelles</a></h3>
410
411
412     <p>Maintenent que nous avons des variables, et que nous pouvons
413     définir et comparer leurs valeurs, nous sommes à même de les
414     utiliser dans des expressions conditionnelles. Ceci confère à SSI le
415     statut de petit langage de programmation.
416     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> fournit une structure <code>if</code>,
417     <code>elif</code>, <code>else</code>, <code>endif</code> pour la
418     construction d'expressions conditionnelles, ce qui vous permet de
419     générer plusieurs pages logiques à partir d'une seule vraie
420     page.</p>
421
422     <p>La structure de l'expression conditionnelle est :</p>
423 <div class="example"><p><code>
424     &lt;!--#if expr="condition" --&gt;<br />
425     &lt;!--#elif expr="condition" --&gt;<br />
426     &lt;!--#else --&gt;<br />
427     &lt;!--#endif --&gt;
428 </code></p></div>
429
430     <p>Une <em>condition</em> peut revêtir la forme de toute comparaison
431     logique - soit une comparaison de valeurs avec une autre, soit une
432     vérification de la "vérité" d'une valeur particulière (Une chaîne
433     donnée est vraie si elle n'est pas vide). Pour une liste exhaustive
434     des opérateurs de comparaison disponibles, voir la documentation du
435     module <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>. Voici quelques exemples
436     illustrant l'utilisation de ces expressions.</p>
437
438     <p>Vous pouvez ajouter les lignes suivantes dans votre fichier de
439     configuration :</p>
440 <div class="example"><p><code>
441         BrowserMatchNoCase macintosh Mac<br />
442         BrowserMatchNoCase MSIE InternetExplorer
443 </code></p></div>
444
445     <p>Ces lignes définissent les variables d'environnement "Mac" et
446     "InternetExplorer" à true, si le client utilise InternetExplorer sur
447     un Macintosh.</p>
448
449     <p>Puis, dans votre document où les SSI sont activées, vous ajoutez
450     ceci :</p>
451 <div class="example"><p><code>
452         &lt;!--#if expr="${Mac} &amp;&amp; ${InternetExplorer}" --&gt;<br />
453         Un texte d'excuses est inséré ici<br />
454         &lt;!--#else --&gt;<br />
455         Ici se trouve du code JavaScipt sympa<br />
456         &lt;!--#endif --&gt;
457 </code></p></div>
458
459     <p>Notez que je n'ai rien contre IE sur Macintosh - J'ai juste
460     phosphoré quelques heures la semaine dernière pour faire fonctionner
461     du JavaScript sous IE sur Macintosh, alors qu'il fonctionnait sous
462     tout autre environnement. Ce qui précède a constitué un
463     contournement provisoire.</p>
464
465     <p>Toute autre variable (que vous avez définie, ou une variable
466     d'environnement normale) peut être utilisée dans les expressions
467     conditionnelles. Associée à la possibilité avec Apache de définir
468     des variables d'environnement à l'aide de directives
469     <code>SetEnvIf</code>, ainsi que d'autres directives en rapport,
470     cette fonctionnalité vous permet d'ajouter des contenus dynamiques
471     assez évolués sans avoir recours aux programmes CGI.</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">Conclusion</a></h2>
476
477     <p>SSI ne remplace certainement pas CGI, ou d'autres technologies
478     utilisées pour la génération de pages web dynamiques. Mais c'est une
479     bonne méthode pour ajouter des petits contenus dynamiques à vos
480     pages, sans devoir fournir un gros effort supplémentaire.</p>
481 </div></div>
482 <div class="bottomlang">
483 <p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
484 <a href="../fr/howto/ssi.html" title="Français">&nbsp;fr&nbsp;</a> |
485 <a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" 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 id="footer">
488 <p class="apache">Copyright 2011 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
489 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
490 </body></html>