<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Tutoriel Apache httpd : Introduction aux "Inclusions C&ocirc;t&eacute; Serveur"
(Server Side Includes - SSI) - Serveur HTTP Apache Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet">
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size">
<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">
<script src="../style/scripts/prettify.min.js">
</script>

<link href="../images/favicon.png" rel="shortcut icon"></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache httpd : Introduction aux "Inclusions C&ocirc;t&eacute; Serveur"
(Server Side Includes - SSI)</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Espa&ntilde;ol">&nbsp;es&nbsp;</a> |
<a href="../fr/howto/ssi.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>

<p>Les SSI permettent d'ajouter du contenu dynamique &agrave; des documents
HTML pr&eacute;existants.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#related">Introduction</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#what">Qu'est-ce que SSI ?</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#configuring">Configurer votre serveur pour permettre les SSI</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#basic">Directives SSI de base</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#additionalexamples">Exemples additionnels</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#config">Que puis-je configurer d'autre ?</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#exec">Ex&eacute;cution de commandes</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#advanced">Techniques SSI avanc&eacute;es</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#conclusion">Conclusion</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="related">Introduction <a title="Lien permanent" href="#related" class="permalink">&para;</a></h2>
 <table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;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>

    <p>Cet article traite des Inclusions C&ocirc;t&eacute; Serveur (Server Side
    Includes), plus commun&eacute;ment appel&eacute;s SSI. Vous trouverez ici la
    mani&egrave;re de configurer votre serveur pour permettre les SSI, ainsi
    qu'une introduction &agrave; quelques techniques SSI de base permettant
    d'ajouter du contenu dynamique &agrave; vos pages HTML pr&eacute;existantes.</p>

    <p>La derni&egrave;re partie de cet article sera consacr&eacute;e aux
    configurations SSI plus avanc&eacute;es, telles que les expressions
    conditionnelles dans les directives SSI.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="what">Qu'est-ce que SSI ? <a title="Lien permanent" href="#what" class="permalink">&para;</a></h2>

    <p>SSI (Server Side Includes) est constitu&eacute; de directives plac&eacute;es dans
    des pages HTML, et &eacute;valu&eacute;es par le serveur au moment o&ugrave; les pages
    sont servies. Elles vous permettent d'ajouter du contenu g&eacute;n&eacute;r&eacute;
    dynamiquement &agrave; une page HTML pr&eacute;existante, sans avoir &agrave; servir la
    page enti&egrave;re via un programme CGI, ou toute autre technologie de
    contenu dynamique.</p>

    <p>Par exemple, vous pouvez ins&eacute;rer la directive suivante dans une
    page HTML existante :</p>

    <div class="example"><p><code>
    &lt;!--#echo var="DATE_LOCAL" --&gt;
    </code></p></div>

    <p>Ainsi, lorsque la page sera servie, la directive sera &eacute;valu&eacute;e et
    remplac&eacute;e par sa valeur :</p>

    <div class="example"><p><code>
    Tuesday, 15-Jan-2013 19:28:54 EST
    </code></p></div>

    <p>Le choix entre l'utilisation des SSI et la g&eacute;n&eacute;ration enti&egrave;re de
    la page par un programme quelconque, est en g&eacute;n&eacute;ral dict&eacute; par la
    proportion de contenu statique et de contenu devant &ecirc;tre g&eacute;n&eacute;r&eacute;
    chaque fois que la page est servie. SSI est id&eacute;al pour ajouter de
    petites quantit&eacute;s d'information, comme l'heure courante dans
    l'exemple pr&eacute;c&eacute;dent. Mais si la
    plus grande partie de votre page est g&eacute;n&eacute;r&eacute;e au moment o&ugrave; elle est
    servie, vous devez vous tourner vers une autre solution.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="configuring">Configurer votre serveur pour permettre les SSI <a title="Lien permanent" href="#configuring" class="permalink">&para;</a></h2>


    <p>Pour permettre l'utilisation des SSI sur votre serveur, vous
    devez ajouter la directive suivante dans votre fichier
    <code>httpd.conf</code>, ou dans un fichier <code>.htaccess</code>
    :</p>
<pre class="prettyprint lang-config">Options +Includes</pre>


    <p>Cette directive indique &agrave; Apache que vous d&eacute;sirez permettre la
    recherche de directives SSI lors de l'interpr&eacute;tation des fichiers.
    Notez cependant que la plupart des configurations contiennent de
    nombreuses directives <code class="directive"><a href="../mod/core.html#options">Options</a></code>
    qui peuvent s'&eacute;craser les unes les autres. Vous devrez probablement
    appliquer ces directives <code>Options</code> au r&eacute;pertoire
    sp&eacute;cifique pour lequel vous voulez activer les SSI, afin d'&ecirc;tre s&ucirc;r
    qu'elles y seront bien activ&eacute;es.</p>

    <p>Tout fichier ne fera cependant pas l'objet de recherche de
    directives SSI. Vous devez indiquer &agrave; Apache quels fichiers seront
    concern&eacute;s. Vous pouvez y parvenir en indiquant une extension, comme
    <code>.shtml</code>, &agrave; l'aide des directives suivantes :</p>
<pre class="prettyprint lang-config">AddType text/html .shtml
AddOutputFilter INCLUDES .shtml</pre>


    <p>Un des d&eacute;savantages de cette approche r&eacute;side dans le fait que si
    vous voulez ajouter des directives SSI &agrave; une page pr&eacute;existante, vous
    devrez changer le nom de cette page, et donc tout lien qui la
    contient, de fa&ccedil;on &agrave; ce qu'elle poss&egrave;de l'extension
    <code>.shtml</code>, condition n&eacute;cessaire pour que les directives
    SSI qu'elle contient soient trait&eacute;es.</p>

    <p>Une autre m&eacute;thode consiste &agrave; utiliser la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> :</p>
<pre class="prettyprint lang-config">XBitHack on</pre>


    <p>La directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>
    indique &agrave; Apache qu'il doit rechercher des directivves SSI dans les
    fichiers si leur bit d'ex&eacute;cution est positionn&eacute;. Il n'est ainsi plus
    n&eacute;cessaire de changer le nom du fichier pour ajouter des directives
    SSI &agrave; une page pr&eacute;existante ; vous devez simplement attribuer les
    droits d'ex&eacute;cution au fichier &agrave; l'aide de <code>chmod</code>.</p>
<div class="example"><p><code>
        chmod +x pagename.html
</code></p></div>

    <p>Un bref commentaire sur ce qu'il ne faut pas faire. Certaines
    personnes peuvent vous conseiller de tout simplement indiquer &agrave;
    Apache de rechercher des directives SSI dans tous les fichiers
    <code>.html</code>, ce qui vous &eacute;vite d'avoir &agrave; g&eacute;rer les noms de
    fichiers avec extension <code>.shtml</code>. Ils n'ont probablement
    pas entendu parler de la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. En effet, vous devez
    garder &agrave; l'esprit qu'en faisant ceci, Apache va devoir rechercher
    des directives SSI dans chaque fichier qu'il sert, m&ecirc;me s'il n'en
    contient aucune. Ce n'est donc pas une bonne id&eacute;e car les
    performances peuvent en &ecirc;tre sensiblement affect&eacute;es.</p>

    <p>Bien entendu, sous Windows, il n'y a pas de bit d'ex&eacute;cution &agrave;
    positionner, ce qui limite un peu vos choix.</p>

    <p>Dans sa configuration par d&eacute;faut, Apache n'envoie pas la date de
    derni&egrave;re modification ou les en-t&ecirc;tes HTTP relatifs &agrave; la taille des
    contenus dans les pages SSI, car ses valeurs sont difficiles &agrave;
    calculer pour les contenus dynamiques. Ceci peut induire une
    impression de diminution des performances c&ocirc;t&eacute; client, en emp&ecirc;chant
    la mise en cache de votre document. Il existe deux m&eacute;thodes pour
    r&eacute;soudre ce probl&egrave;me :</p>

    <ol>
      <li>Utilisez la configuration <code>XBitHack Full</code>. Elle
      indique &agrave; Apache de d&eacute;terminer la date de derni&egrave;re modification en
      ne regardant que la date du fichier &agrave; l'origine de la requ&ecirc;te,
      tout en ignorant la date de modification de tout fichier inclus.</li>

      <li>Utilisez les directives fournies par le module
      <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> pour d&eacute;finir de mani&egrave;re explicite la
      date d'expiration de vos fichiers, laissant par la-m&ecirc;me
      aux navigateurs et aux mandataires le soin de d&eacute;terminer s'il est
      opportun ou non de les mettre en cache.</li>
    </ol>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="basic">Directives SSI de base <a title="Lien permanent" href="#basic" class="permalink">&para;</a></h2>

    <p>Les directives SSI adoptent la syntaxe suivante :</p>
<div class="example"><p><code>
        &lt;!--#fonction attribut=valeur attribut=valeur ... --&gt;
</code></p></div>

    <p>Le format d'une directive SSI &eacute;tant similaire &agrave; celui d'un
    commentaire HTML, si vous n'avez pas activ&eacute; correctement SSI, le
    navigateur l'ignorera, mais elle sera encore visible dans le source
    HTML. Si SSI est correctement configur&eacute;, la directive sera remplac&eacute;e
    par ses r&eacute;sultats.</p>

    <p>"fonction" peut prendre de nombreuses formes, et nous d&eacute;crirons
    plus pr&eacute;cis&eacute;ment la plupart d'entre eux dans la prochaine version de
    ce document. Pour le moment, voici quelques exemples de ce que vous
    pouvez faire avec SSI.</p>

<h3 id="todaysdate">La date courante</h3>

<div class="example"><p><code>
        &lt;!--#echo var="DATE_LOCAL" --&gt;
</code></p></div>

    <p>La fonction <code>echo</code> permet d'afficher la valeur d'une
    variable. Il existe un grand nombre de variables standards, y
    compris l'ensemble des variables d'environnement disponibles pour
    les programmes CGI. De plus, vous pouvez d&eacute;finir vos propres
    variables &agrave; l'aide de la fonction <code>set</code>.</p>

    <p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous
    pouvez utiliser la fonction <code>config</code> avec un attribut
    <code>timefmt</code>, pour le modifier.</p>

<div class="example"><p><code>
        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br>
        Today is &lt;!--#echo var="DATE_LOCAL" --&gt;
</code></p></div>


<h3 id="lastmodified">Date de modification du fichier</h3>

<div class="example"><p><code>
        Derni&egrave;re modification du document &lt;!--#flastmod file="index.html" --&gt;
</code></p></div>

    <p>Le format peut l&agrave; aussi &ecirc;tre modifi&eacute; &agrave; l'aide de l'attribut
    <code>timefmt</code>.</p>


<h3 id="cgi">Inclusion des r&eacute;sultats d'un programme CGI</h3>

    <p>C'est le cas le plus courant d'utilisation des SSI - afficher les
    r&eacute;sultats d'un programme CGI, comme l'universellement ador&eacute;
    "compteur d'acc&egrave;s".</p>

<div class="example"><p><code>
        &lt;!--#include virtual="/cgi-bin/counter.pl" --&gt;
</code></p></div>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="additionalexamples">Exemples additionnels <a title="Lien permanent" href="#additionalexamples" class="permalink">&para;</a></h2>


    <p>Vous trouverez dans ce qui suit quelques exemples sp&eacute;cifiques de
    ce que vous pouvez faire de vos documents HTML avec SSI.</p>

<h3 id="docmodified">Quand ce document a-t-il &eacute;t&eacute; modifi&eacute; ?</h3>

    <p>Nous avons mentionn&eacute; plus haut que vous pouviez utiliser SSI pour
    informer l'utilisateur de la date de derni&egrave;re modification du
    document. Cependant, la m&eacute;thode pour y parvenir n'a pas &eacute;t&eacute; vraiment
    abord&eacute;e. Plac&eacute; dans votre document HTML, le code suivant va ins&eacute;rer
    un rep&egrave;re de temps dans votre page. Bien entendu, SSI devra avoir
    &eacute;t&eacute; correctement activ&eacute;, comme d&eacute;crit plus haut.</p>
<div class="example"><p><code>
        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br>
        Derni&egrave;re modification du fichier &lt;!--#flastmod file="ssi.shtml" --&gt;
</code></p></div>

    <p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> par le
    nom du fichier auquel vous faites r&eacute;f&eacute;rence. Ceci ne conviendra pas
    si vous recherchez un morceau de code g&eacute;n&eacute;rique que vous pourrez
    ins&eacute;rer dans tout fichier ; dans ce cas, il est pr&eacute;f&eacute;rable
    d'utiliser la variable <code>LAST_MODIFIED</code> :</p>
<div class="example"><p><code>
        &lt;!--#config timefmt="%D" --&gt;<br>
        This file last modified &lt;!--#echo var="LAST_MODIFIED" --&gt;
</code></p></div>

    <p>Pour plus de d&eacute;tails sur le format <code>timefmt</code>, tapez
    <code>strftime</code> dans votre moteur de recherche pr&eacute;fer&eacute;. La
    syntaxe est identique.</p>


<h3 id="standard-footer">Inclusion d'un pied de page standard</h3>


    <p>Si le site que vous g&eacute;rez comporte plus que quelques pages, vous
    allez vite vous apercevoir qu'effectuer des modifications sur toutes
    ces pages peut devenir tr&egrave;s contraignant, en particulier si vous
    voulez qu'elles conservent un aspect homog&egrave;ne.</p>

    <p>Inclure un fichier pour un en-t&ecirc;te et/ou un pied de page peut
    simplifier cette corv&eacute;e de mises &agrave; jour. Il vous suffit de
    confectionner un fichier de pied de page, et de l'inclure dans
    chaque page &agrave; l'aide de l'&eacute;l&eacute;ment SSI <code>include</code>. Pour
    d&eacute;finir le fichier &agrave; inclure, la fonction <code>include</code> peut
    utiliser soit l'attribut <code>file</code>, soit l'attribut
    <code>virtual</code>. L'attribut <code>file</code> est un chemin de
    fichier <em>relatif au r&eacute;pertoire courant</em>. C'est &agrave; dire qu'il
    ne peut ni avoir pour valeur un chemin absolu (commen&ccedil;ant par /), ni
    comporter "../" dans son chemin. L'attribut <code>virtual</code> est
    probablement plus commode, et peut sp&eacute;cifier une URL relative au
    document servi. Elle peut commencer par un /, mais le fichier inclus
    et le fichier servi doivent r&eacute;sider sur le m&ecirc;me serveur.</p>
<div class="example"><p><code>
        &lt;!--#include virtual="/footer.html" --&gt;
</code></p></div>

    <p>Je combinerai souvent ces deux derniers points, en ajoutant une
    directive <code>LAST_MODIFIED</code> dans un fichier de pied de page
    destin&eacute; &agrave; &ecirc;tre inclus. Le fichier inclus peut contenir des
    directives SSI, et les inclusions peuvent &ecirc;tre imbriqu&eacute;es - &agrave;
    savoir, le fichier inclus peut inclure un autre fichier, etc...</p>


</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="config">Que puis-je configurer d'autre ? <a title="Lien permanent" href="#config" class="permalink">&para;</a></h2>


    <p>En plus du format de date, vous pouvez utiliser l'&eacute;l&eacute;ment
    <code>config</code> pour configurer deux autres choses.</p>

    <p>En g&eacute;n&eacute;ral, lorsque quelque chose se passe mal avec votre
    directive SSI, vous recevez le message :</p>
<div class="example"><p><code>
        [an error occurred while processing this directive]
</code></p></div>

    <p>Pour modifier ce message, vous pouvez utiliser l'attribut
    <code>errmsg</code> avec la fonction <code>config</code> :</p>
<div class="example"><p><code>
        &lt;!--#config errmsg="[Il semblerait que vous ne sachiez pas
	utiliser les SSI]" --&gt;
</code></p></div>

    <p>Il est cependant probable que les utilisateurs finaux ne voient
    jamais ce message, car vous aurez r&eacute;solu tous les probl&egrave;mes issus de
    vos directives SSI avant que votre site ne soit mis en production.
    (N'est-ce pas ?)</p>

    <p>Vous pouvez aussi modifier le format sous lequel les tailles de
    fichiers sont affich&eacute;es &agrave; l'aide de l'attribut <code>sizefmt</code>.
    Vous pouvez sp&eacute;cifier <code>bytes</code> pour un affichage en
    octets, ou <code>abbrev</code> pour un affichage plus concis en Ko
    ou Mo, selon le cas.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="exec">Ex&eacute;cution de commandes <a title="Lien permanent" href="#exec" class="permalink">&para;</a></h2>
    

    <p>Voici autre chose que vous pouvez faire avec la fonction
    <code>exec</code>. Vous pouvez vraiment faire ex&eacute;cuter une commande
    par SSI en utilisant le shell (<code>/bin/sh</code>, pour &ecirc;tre plus
    pr&eacute;cis - ou le shell DOS, si vous &ecirc;tes sous Win32). Par exemple, ce
    qui suit vous permet d'afficher le contenu d'un r&eacute;pertoire.</p>
<div class="example"><p><code>
        &lt;pre&gt;<br>
        &lt;!--#exec cmd="ls" --&gt;<br>
        &lt;/pre&gt;
</code></p></div>

    <p>ou, sous Windows</p>
<div class="example"><p><code>
        &lt;pre&gt;<br>
        &lt;!--#exec cmd="dir" --&gt;<br>
        &lt;/pre&gt;
</code></p></div>

    <p>Vous noterez probablement l'&eacute;trange formatage provoqu&eacute; par cette
    directive sous Windows, car la sortie de <code>dir</code> contient
    la cha&icirc;ne  de caract&egrave;res "&lt;<code>dir</code>&gt;", ce qui trompe le
    navigateur.</p>

    <p>Notez que cette fonctionnalit&eacute; est tr&egrave;s dangereuse, car elle va
    permettre d'ex&eacute;cuter tout code associ&eacute; &agrave; l'&eacute;l&eacute;ment
    <code>exec</code>. Si vous &ecirc;tes dans la situation o&ugrave; les
    utilisateurs peuvent &eacute;diter le contenu de vos pages web, dans le cas
    d'un "livre d'or" par exemple, assurez-vous de d&eacute;sactiver cette
    fonctionnalit&eacute;. Vous pouvez, tout en permettant les SSI, d&eacute;sactiver
    la fonctionnalit&eacute; <code>exec</code> &agrave; l'aide de l'argument
    <code>IncludesNOEXEC</code> de la directive
    <code>Options</code>.</p>
    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="advanced">Techniques SSI avanc&eacute;es <a title="Lien permanent" href="#advanced" class="permalink">&para;</a></h2>


    <p>Outre l'affichage de contenu, les SSI d'Apache vous permettent de
    d&eacute;finir des variables, et de les utiliser dans des comparaisons et
    des conditions.</p>

<h3 id="variables">D&eacute;finition de variables</h3>

    <p>Avec l'&eacute;l&eacute;ment <code>set</code>, vous pouvez d&eacute;finir des
    variables pour un usage ult&eacute;rieur. Comme nous en aurons besoin plus
    loin, nous allons en parler tout de suite. La syntaxe se pr&eacute;sente
    comme suit :</p>
<div class="example"><p><code>
        &lt;!--#set var="name" value="Rich" --&gt;
</code></p></div>

    <p>Pour affecter une valeur &agrave; vos variables, en plus de la
    d&eacute;finition litt&eacute;rale de l'exemple ci-dessus, vous pouvez utiliser
    une autre variable, y compris les <a href="../env.html">variables d'environnement</a>, ou les variables
    d&eacute;crites plus haut (comme <code>LAST_MODIFIED</code> par exemple).
    Pour indiquer qu'il s'agit d'une variable et non d'une cha&icirc;ne, vous
    devez utiliser le symbole dollar ($) devant le nom de la
    variable.</p>

    <div class="example"><p><code> &lt;!--#set var="modified" value="$LAST_MODIFIED" --&gt;
    </code></p></div>

    <p>Pour ins&eacute;rer un caract&egrave;re $ dans la valeur de votre variable,
    vous devez l'&eacute;chapper &agrave; l'aide d'un backslash.</p>
<div class="example"><p><code>
        &lt;!--#set var="cost" value="\$100" --&gt;
</code></p></div>

    <p>Enfin, si vous voulez ins&eacute;rer une variable dans une cha&icirc;ne, et
    s'il y a une chance pour que le nom de la variable se confonde avec
    le reste de la cha&icirc;ne, vous pouvez l'entourer d'accolades pour
    eviter toute confusion (Il est difficile de trouver un bon exemple
    pour illustrer ceci, mais j'esp&egrave;re que vous comprendrez).</p>
<div class="example"><p><code>
        &lt;!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --&gt;
</code></p></div>


<h3 id="conditional">Expressions conditionnelles</h3>


    <p>Maintenent que nous avons des variables, et que nous pouvons
    d&eacute;finir et comparer leurs valeurs, nous sommes &agrave; m&ecirc;me de les
    utiliser dans des expressions conditionnelles. Ceci conf&egrave;re &agrave; SSI le
    statut de petit langage de programmation.
    <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> fournit une structure <code>if</code>,
    <code>elif</code>, <code>else</code>, <code>endif</code> pour la
    construction d'expressions conditionnelles, ce qui vous permet de
    g&eacute;n&eacute;rer plusieurs pages logiques &agrave; partir d'une seule vraie
    page.</p>

    <p>La structure de l'expression conditionnelle est :</p>
<div class="example"><p><code>
    &lt;!--#if expr="condition" --&gt;<br>
    &lt;!--#elif expr="condition" --&gt;<br>
    &lt;!--#else --&gt;<br>
    &lt;!--#endif --&gt;
</code></p></div>

    <p>Une <em>condition</em> peut rev&ecirc;tir la forme de toute comparaison
    logique - soit une comparaison de valeurs avec une autre, soit une
    v&eacute;rification de la "v&eacute;rit&eacute;" d'une valeur particuli&egrave;re (Une cha&icirc;ne
    donn&eacute;e est vraie si elle n'est pas vide). Pour une liste exhaustive
    des op&eacute;rateurs de comparaison disponibles, voir la documentation du
    module <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>.</p>

    <p>Par exemple, spour ins&eacute;rer l'heure du jour dans votre page web,
    vous pouvez ajouter ces lignes dans la page HTML :</p>

    <div class="example"><p><code>
    Good
    &lt;!--#if expr="%{TIME_HOUR} &lt;12" --&gt;<br>
    morning!<br>
    &lt;!--#else --&gt;<br>
    afternoon!<br>
    &lt;!--#endif --&gt;<br>
    </code></p></div>    

    <p>Toute autre variable (que vous avez d&eacute;finie, ou une variable
    d'environnement normale) peut &ecirc;tre utilis&eacute;e dans les expressions
    conditionnelles. Voir le document <a href="../expr.html">Expressions
    rationnelles dans le serveur HTTP Apache</a> pour plus de d&eacute;tails &agrave;
    propos du fonctionnement du moteur d'&eacute;valuation des expressions
    rationnelles.</p>
    
    <p>Associ&eacute;e &agrave; la possibilit&eacute; avec Apache de d&eacute;finir
    des variables d'environnement &agrave; l'aide de directives
    <code>SetEnvIf</code>, ainsi que d'autres directives en rapport,
    cette fonctionnalit&eacute; vous permet d'ajouter une grande vari&eacute;t&eacute;
    de contenus dynamiques c&ocirc;t&eacute; serveur sans avoir &agrave; concevoir une
    application web de A &agrave; Z.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="conclusion">Conclusion <a title="Lien permanent" href="#conclusion" class="permalink">&para;</a></h2>

    <p>SSI ne remplace certainement pas CGI, ou d'autres technologies
    utilis&eacute;es pour la g&eacute;n&eacute;ration de pages web dynamiques. Mais c'est une
    bonne m&eacute;thode pour ajouter des petits contenus dynamiques &agrave; vos
    pages, sans devoir fournir un gros effort suppl&eacute;mentaire.</p>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/howto/ssi.html" hreflang="es" rel="alternate" title="Espa&ntilde;ol">&nbsp;es&nbsp;</a> |
<a href="../fr/howto/ssi.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
    langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
    document.body.appendChild(qv);
    var qvBtn = document.createElement('button');
    qvBtn.className = 'qv-toggle';
    qvBtn.setAttribute('aria-label', 'Toggle page navigation');
    qvBtn.innerHTML = '&#9776;';
    document.body.appendChild(qvBtn);
    qvBtn.addEventListener('click', function() {
        var isOpen = qv.classList.toggle('open');
        if (isOpen) {
            qv.style.top = window.scrollY + 10 + 'px';
        }
    });
    window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>