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