<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1786682:1935522 (outdated) -->
+<!-- English Revision: 1935522 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<summary>
<p>Les SSI permettent d'ajouter du contenu dynamique à des documents
-HTML préexistants.</p>
+HTML préexistants sans nécessiter de cadriciel complet d’application. Ils
+s’avèrent particulièrement utiles pour insérer des éléments courants — en-têtes,
+pieds de page, navigation, horodatages — dans des pages qui, sans cela, seraient
+statiques.</p>
</summary>
<section id="related"><title>Introduction</title>
</directivelist>
</related>
- <p>Cet article traite des Inclusions Côté Serveur (Server Side
- Includes), plus communément appelés SSI. Vous trouverez ici la
- manière de configurer votre serveur pour permettre les SSI, ainsi
- qu'une introduction à quelques techniques SSI de base permettant
- d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p>
-
- <p>La dernière partie de cet article sera consacrée aux
- configurations SSI plus avancées, telles que les expressions
- conditionnelles dans les directives SSI.</p>
+ <p>Les SSI permettent d’insérer de simples directives dans les fichiers
+ HTML, que le serveur évaluera avant d’envoyer la page au client. Il s’agit
+ d’une manière simple de stocker du contenu partagé (comme un pied de page
+ global au site ou un horodatage de dernière modification) en un seul
+ endroit, sans nécessiter de moteur de modèle ou de serveur d’applications.</p>
+ <p>Ce document décrit la manière de configurer httpd pour autoriser les
+ SSI, les directives SSI basiques pour les tâches courantes, ainsi que
+ quelques techniques plus avancées comme l’inclusion de variable et les
+ expressions conditionnelles.</p>
+
</section>
<section id="what"><title>Qu'est-ce que SSI ?</title>
- <p>SSI (Server Side Includes) est constitué de directives placées dans
- des pages HTML, et évaluées par le serveur au moment où les pages
- sont servies. Elles vous permettent d'ajouter du contenu généré
- dynamiquement à une page HTML préexistante, sans avoir à servir la
- page entière via un programme CGI, ou toute autre technologie de
- contenu dynamique.</p>
-
- <p>Par exemple, vous pouvez insérer la directive suivante dans une
- page HTML existante :</p>
-
- <example>
- <!--#echo var="DATE_LOCAL" -->
- </example>
+ <p>Les directives SSI sont des commentaires HTML avec une syntaxe spécifique
+ que le module <module>mod_include</module> reconnaît et évalue avant que la
+ page ne soit envoyée au client. Elle sont de la forme suivante :</p>
- <p>Ainsi, lorsque la page sera servie, la directive sera évaluée et
- remplacée par sa valeur :</p>
+<example>
++<highlight language="html">
++<!--#echo var="DATE_LOCAL" -->
++</highlight>
++</example>
+ <p>Lorsque la page est servie, ce fragment est remplacé par sa valeur :</p>
+
<example>
- Tuesday, 15-Jan-2013 19:28:54 EST
+ Thursday, 18-Jun-2026 14:22:07 EDT
</example>
- <p>Le choix entre l'utilisation des SSI et la génération entière de
- la page par un programme quelconque, est en général dicté par la
- proportion de contenu statique et de contenu devant être généré
- chaque fois que la page est servie. SSI est idéal pour ajouter de
- petites quantités d'information, comme l'heure courante dans
- l'exemple précédent. Mais si la
- plus grande partie de votre page est générée au moment où elle est
- servie, vous devez vous tourner vers une autre solution.</p>
+ <p>Les directives étant intégrées dans des commentaires HTML, les
+ navigateurs les ignoreront si les SSI ne sont pas activées (bien qu’elles
+ demeurent visibles dans le code source de la page).</p>
</section>
<section id="configuring">
<title>Configurer votre serveur pour permettre les SSI</title>
- <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>
+ <p>Pour activer le traitement des SSI, ajoutez la directive suivante à votre
+ fichier <code>httpd.conf</code> ou à un fichier <code>.htaccess</code> :</p>
+
+<example>
<highlight language="config">
Options +Includes
</highlight>
+</example>
+
+ <p>Si cette option est définie, httpd va analyser les fichiers en y
+ recherchant des directives SSI. Comme la plupart des configurations
+ contiennent plusieurs directives <directive module="core"
+ >Options</directive> qui peuvent s’outrepasser les unes les autres,
+ appliquez la directive d’activation au répertoire spécifique pour lequel
+ vous voulez activer les SSI.</p>
- <p>Cette directive indique à Apache que vous désirez permettre la
- recherche de directives SSI lors de l'interprétation des fichiers.
- Notez cependant que la plupart des configurations contiennent de
- nombreuses directives <directive module="core">Options</directive>
- qui peuvent s'écraser les unes les autres. Vous devrez probablement
- appliquer ces directives <code>Options</code> au répertoire
- spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
- qu'elles y seront bien activées.</p>
-
- <p>Tout fichier ne fera cependant pas l'objet de recherche de
- directives SSI. Vous devez indiquer à Apache quels fichiers seront
- concernés. Vous pouvez y parvenir en indiquant une extension, comme
- <code>.shtml</code>, à l'aide des directives suivantes :</p>
+ <p>Vous devez aussi indiquer à httpd les fichiers qu’il doit analyser. Pour
+ ce faire, il existe deux approches courantes.</p>
+
+ <p>La première consiste à indiquer une extension de nom de fichier (en
+ général <code>.shtml</code>) pour les pages pour lesquelles les SSI sont
+ activées :</p>
+
+<example>
<highlight language="config">
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</highlight>
+</example>
- <p>Un des désavantages de cette approche réside dans le fait que si
- vous voulez ajouter des directives SSI à une page préexistante, vous
- devrez changer le nom de cette page, et donc tout lien qui la
- contient, de façon à ce qu'elle possède l'extension
- <code>.shtml</code>, condition nécessaire pour que les directives
- SSI qu'elle contient soient traitées.</p>
+ <p>Cette approche a pour désavantage de nécessiter, pour ajouter des SSI à
+ une page existante, de renommer le fichier (et de mettre à jour tous les
+ liens vers ce dernier) pour utiliser l’extension <code>.shtml</code>.</p>
- <p>Une autre méthode consiste à utiliser la directive <directive
+ <p>La seconde approche consiste à utiliser la directive <directive
module="mod_include">XBitHack</directive> :</p>
+
+<example>
<highlight language="config">
XBitHack on
</highlight>
+</example>
+
+ <p>La directive <directive module="mod_include">XBitHack</directive> indique
+ à httpd qu’il doit analyser tout fichier dont le bit d’exécution est
+ positionné. Ainsi, pour activer les SSI pour une page existante, il suffit
+ de rendre le fichier exécutable :</p>
- <p>La directive <directive module="mod_include">XBitHack</directive>
- indique à Apache qu'il doit rechercher des directivves SSI dans les
- fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus
- nécessaire de changer le nom du fichier pour ajouter des directives
- SSI à une page préexistante ; vous devez simplement attribuer les
- droits d'exécution au fichier à l'aide de <code>chmod</code>.</p>
<example>
- chmod +x pagename.html
+<highlight language="bash">
+chmod +x pagename.html
+</highlight>
</example>
-
- <p>Un bref commentaire sur ce qu'il ne faut pas faire. Certaines
- personnes peuvent vous conseiller de tout simplement indiquer à
- Apache de rechercher des directives SSI dans tous les fichiers
- <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de
- fichiers avec extension <code>.shtml</code>. Ils n'ont probablement
- pas entendu parler de la directive <directive
- module="mod_include">XBitHack</directive>. En effet, vous devez
- garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher
- des directives SSI dans chaque fichier qu'il sert, même s'il n'en
- contient aucune. Ce n'est donc pas une bonne idée car les
- performances peuvent en être sensiblement affectées.</p>
-
- <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à
- positionner, ce qui limite un peu vos choix.</p>
-
- <p>Dans sa configuration par défaut, Apache n'envoie pas la date de
- dernière modification ou les en-têtes HTTP relatifs à la taille des
- contenus dans les pages SSI, car ses valeurs sont difficiles à
- calculer pour les contenus dynamiques. Ceci peut induire une
- impression de diminution des performances côté client, en empêchant
- la mise en cache de votre document. Il existe deux méthodes pour
- résoudre ce problème :</p>
+
+ <note type="warning"><p>
+ Évitez de configurer httpd pour analyser <em>tous</em> les fichiers
+ <code>.html</code> pour y trouver des directives SSI. Cela force en effet le
+ serveur à parcourir tous les fichiers HTML qu’il sert, même ceux qui n’ont
+ pas de contenu SSI, ce qui ajoute une surcharge de travail inutile.
+ </p></note>
+
+ <p>Sous Windows, il n’y a pas de bit d’exécution ; l’approche avec la
+ directive <directive module="mod_include">XBitHack</directive> n’est donc
+ pas valable dans ce cas. Vous devrez alors utiliser l’approche par extension
+ de nom de fichier.</p>
+
+ <p>Par défaut, httpd n’envoie pas la date de dernière modification ou les
+ en-têtes content-length sur les pages SSI, car ces valeurs sont difficiles à
+ calculer pour un contenu dynamique. Cela peut empêcher la mise en cache et
+ induire un ressenti de performances plus lentes. Deux approches peuvent
+ aider :</p>
<ol>
- <li>Utilisez la configuration <code>XBitHack Full</code>. Elle
- indique à Apache de déterminer la date de dernière modification en
- ne regardant que la date du fichier à l'origine de la requête,
- tout en ignorant la date de modification de tout fichier inclus.</li>
-
- <li>Utilisez les directives fournies par le module
- <module>mod_expires</module> pour définir de manière explicite la
- date d'expiration de vos fichiers, laissant par la-même
- aux navigateurs et aux mandataires le soin de déterminer s'il est
- opportun ou non de les mettre en cache.</li>
+ <li>Utilisez la directive <code>XBitHack Full</code> qui indique à httpd
+ qu’il doit déterminer la date de dernière modification à partir du fichier
+ initialement demandé, tout en ignorant les dates de dernière modification
+ des fichiers inclus.</li>
+
+ <li>Utilisez le module <module>mod_expires</module> pour définir un moment
+ d’expiration explicite, indiquant ainsi aux navigateurs et aux mandataires
+ que le contenu peut être mis en cache.</li>
+
</ol>
</section>
<section id="basic"><title>Directives SSI de base</title>
- <p>Les directives SSI adoptent la syntaxe suivante :</p>
+ <p>Les directives SSI utilisent la syntaxe suivante :</p>
<example>
- <!--#fonction attribut=valeur attribut=valeur ... -->
+<highlight language="html">
+<!--#function attribute=value attribute=value ... -->
+</highlight>
</example>
- <p>Le format d'une directive SSI étant similaire à celui d'un
- commentaire HTML, si vous n'avez pas activé correctement SSI, le
- navigateur l'ignorera, mais elle sera encore visible dans le source
- HTML. Si SSI est correctement configuré, la directive sera remplacée
- par ses résultats.</p>
-
- <p>"fonction" peut prendre de nombreuses formes, et nous décrirons
- plus précisé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>
+ <p>Si les SSI sont correctement configurées, la directive sera remplacée par
+ sa sortie. Dans le cas contraire, elle demeurera en tant que commentaire
+ HTML — invisible à l’utilisateur final, mais présente dans le code source de
+ la page.</p>
<section id="todaysdate"><title>La date courante</title>
<example>
- <!--#echo var="DATE_LOCAL" -->
+<highlight language="html">
+<!--#echo var="DATE_LOCAL" -->
+</highlight>
</example>
- <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éfinir vos propres
- variables à l'aide de la fonction <code>set</code>.</p>
+ <p>La fonction <code>echo</code> a pour sortie la valeur d’une variable. Les
+ variables standard incluent le jeu complet de variables d’environnement
+ disponibles pour les programmes CGI, ainsi que les variables que vous pouvez
+ définir avec <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>
+ <p>Pour personnaliser le format de la date, utilisez la fonction
+ <code>config</code> avec l’attribut <code>timefmt</code> :</p>
<example>
- <!--#config timefmt="%A %B %d, %Y" --><br />
- Today is <!--#echo var="DATE_LOCAL" -->
+<highlight language="html">
+<!--#config timefmt="%A %B %d, %Y" --><br />
+Today is <!--#echo var="DATE_LOCAL" -->
+</highlight>
</example>
</section>
<section id="lastmodified"><title>Date de modification du fichier</title>
<example>
- Dernière modification du document <!--#flastmod file="index.html" -->
+<highlight language="html">
+Dernière modification du document <!--#flastmod file="index.html" -->
+</highlight>
</example>
<p>Le format peut là aussi être modifié à l'aide de l'attribut
<section id="cgi"><title>Inclusion des résultats d'un programme CGI</title>
- <p>C'est le cas le plus courant d'utilisation des SSI - afficher les
- résultats d'un programme CGI, comme l'universellement adoré
- "compteur d'accès".</p>
+ <p>Les SSI permettent d’inclure directement la sortie d’un programme CGI
+ dans la page :</p>
<example>
- <!--#include virtual="/cgi-bin/counter.pl" -->
+<highlight language="html">
+<!--#include virtual="/cgi-bin/counter.pl" -->
+</highlight>
</example>
</section>
<section id="additionalexamples">
<title>Exemples additionnels</title>
- <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de
- ce que vous pouvez faire de vos documents HTML avec SSI.</p>
+ <p>Vous trouverez dans les exemples pratiques suivants des cas d’utilisation
+ courants des SSI.</p>
<section id="docmodified"><title>Quand ce document a-t-il été modifié ?</title>
- <p>Nous avons mentionné plus haut que vous pouviez utiliser SSI pour
- informer l'utilisateur de la date de dernière modification du
- document. Cependant, la méthode pour y parvenir n'a pas été vraiment
- abordée. Placé dans votre document HTML, le code suivant va insérer
- un repère de temps dans votre page. Bien entendu, SSI devra avoir
- été correctement activé, comme décrit plus haut.</p>
-<example>
- <!--#config timefmt="%A %B %d, %Y" --><br />
- Dernière modification du fichier <!--#flastmod file="ssi.shtml" -->
-</example>
+ <p>Une des utilisations courantes des SSI est l’affichage d’un horodatage
+ « date de dernière modification » sur chaque page. Le code suivant utilise
+ la variable <code>LAST_MODIFIED</code> ; vous pouvez donc coller le même
+ extrait dans tout fichier sans modifier son nom :</p>
- <p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> par le
- nom du fichier auquel vous faites référence. Ceci ne conviendra pas
- si vous recherchez un morceau de code générique que vous pourrez
- insérer dans tout fichier ; dans ce cas, il est préférable
- d'utiliser la variable <code>LAST_MODIFIED</code> :</p>
<example>
- <!--#config timefmt="%D" --><br />
- This file last modified <!--#echo var="LAST_MODIFIED" -->
+<highlight language="html">
+<!--#config timefmt="%D" --><br />
+Date de dernière modification de ce fichier <!--#echo var="LAST_MODIFIED" -->
+</highlight>
+
</example>
- <p>Pour plus de détails sur le format <code>timefmt</code>, tapez
- <code>strftime</code> dans votre moteur de recherche préferé. La
- syntaxe est identique.</p>
+ <p>Pour des détails à propos des chaînes de formatage de
+ <code>timefmt</code>, voir la documentation de <code>strftime</code> dans le
+ manuel de référence de la bibliothèque C de votre système.</p>
</section>
<section id="standard-footer">
<title>Inclusion d'un pied de page standard</title>
- <p>Si le site que vous gérez comporte plus que quelques pages, vous
- allez vite vous apercevoir qu'effectuer des modifications sur toutes
- ces pages peut devenir très contraignant, en particulier si vous
- voulez qu'elles conservent un aspect homogène.</p>
-
- <p>Inclure un fichier pour un en-tête et/ou un pied de page peut
- simplifier cette corvée de mises à jour. Il vous suffit de
- confectionner un fichier de pied de page, et de l'inclure dans
- chaque page à l'aide de l'élément SSI <code>include</code>. Pour
- définir le fichier à 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épertoire courant</em>. C'est à dire qu'il
- ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni
- comporter "../" dans son chemin. L'attribut <code>virtual</code> est
- probablement plus commode, et peut spécifier une URL relative au
- document servi. Elle peut commencer par un /, mais le fichier inclus
- et le fichier servi doivent résider sur le même serveur.</p>
+ <p>Sur un site qui comporte plus que quelques pages, maintenir un
+ en-tête ou un pied de page cohérent sur toutes les pages peut s’avérer
+ fastidieux. Les SSI résolvent ce problème en permettant de stocker le
+ contenu partagé dans un seul fichier et d’inclure ce dernier n’importe
+ où :</p>
+
<example>
- <!--#include virtual="/footer.html" -->
+<highlight language="html">
+<!--#include virtual="/footer.html" -->
+</highlight>
</example>
- <p>Je combinerai souvent ces deux derniers points, en ajoutant une
- directive <code>LAST_MODIFIED</code> dans un fichier de pied de page
- destiné à être inclus. Le fichier inclus peut contenir des
- directives SSI, et les inclusions peuvent être imbriquées - à
- savoir, le fichier inclus peut inclure un autre fichier, etc...</p>
+ <p>La fonction <code>include</code> accepte deux attributs :
+ <code>file</code> qui spécifie un chemin relatif au répertoire actuel (il ne
+ peut pas spécifier un chemin absolu ou contenant <code>../</code>), et
+ <code>virtual</code> qui spécifie un URL relatif au document servi (et qui
+ peut commencer par <code>/</code>, mais doit être sur le même serveur).</p>
+
+ <p>Les directives SSI au sein des fichiers inclus sont évaluées normalement
+ et les inclusions peuvent être imbriquées. Cela signifie que vous pouvez
+ placer un horodatage <code>LAST_MODIFIED</code> dans votre fichier de pied
+ de page, et qu’il sera évalué dans le contexte de chaque page qui l’inclut.</p>
+
</section>
</section>
<section id="config">
-<title>Que puis-je configurer d'autre ?</title>
+<title>Autres options de configuration</title>
- <p>En plus du format de date, vous pouvez utiliser l'élément
- <code>config</code> pour configurer deux autres choses.</p>
+ <p>En plus de <code>timefmt</code>, la fonction <code>config</code> accepte
+ deux autres attributs.</p>
- <p>En général, lorsque quelque chose se passe mal avec votre
- directive SSI, vous recevez le message :</p>
+ <p>L’attribut <code>errmsg</code> modifie le message d’erreur affiché
+ lorsqu’une directive SSI échoue. Le message par défaut est :</p>
<example>
- [an error occurred while processing this directive]
+[an error occurred while processing this directive]
</example>
- <p>Pour modifier ce message, vous pouvez utiliser l'attribut
- <code>errmsg</code> avec la fonction <code>config</code> :</p>
+ <p>Vous pouvez le remplacer par un contenu plus adapté à votre site :</p>
<example>
- <!--#config errmsg="[Il semblerait que vous ne sachiez pas
- utiliser les SSI]" -->
+<highlight language="html">
+<!--#config errmsg="[Content unavailable]" -->
+</highlight>
</example>
- <p>Il est cependant probable que les utilisateurs finaux ne voient
- jamais ce message, car vous aurez résolu tous les problè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ées à l'aide de l'attribut <code>sizefmt</code>.
- Vous pouvez spé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>
- </section>
+ <p>L’attribut <code>sizefmt</code> contrôle la manière dont les tailles de
+ fichier sont spécifiées : <code>bytes</code> pour un décompte en octets ou
+ <code>abbrev</code> pour une forme abrégée en Ko ou Mo.</p>
+</section>
<section id="exec">
<title>Exécution de commandes</title>
- <p>Voici autre chose que vous pouvez faire avec la fonction
- <code>exec</code>. Vous pouvez vraiment faire exécuter une commande
- par SSI en utilisant le shell (<code>/bin/sh</code>, pour être plus
- précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce
- qui suit vous permet d'afficher le contenu d'un répertoire.</p>
-<example>
- <pre><br />
- <!--#exec cmd="ls" --><br />
- </pre>
-</example>
+ <p>La fonction <code>exec</code> permet d’exécuter une commande du shell et
+ d’inclure sa sortie dans la page. Sur les systèmes de style Unix, la
+ commande est exécutée via <code>/bin/sh</code>, et sous Windows via
+ l’interpréteur de commande.</p>
- <p>ou, sous Windows</p>
<example>
- <pre><br />
- <!--#exec cmd="dir" --><br />
- </pre>
+<highlight language="html">
+<pre>
+<!--#exec cmd="ls" -->
+</pre>
+</highlight>
</example>
+ <note type="warning"><p>
+ La fonctionnalité <code>exec</code> constitue un risque de sécurité
+ significatif. En effet, elle exécute des commandes arbitraires avec les
+ privilèges du processus du serveur web. Si les utilisateurs peuvent éditer
+ du contenu sur votre site, assurez-vous que cette fonctionnalité soit
+ désactivée en spécifiant <code>IncludesNOEXEC</code> au lieu de
+ <code>Includes</code> dans la définition de la directive <directive module="core"
+ >Options</directive>.
+ </p></note>
+</section>
- <p>Vous noterez probablement l'étrange formatage provoqué par cette
- directive sous Windows, car la sortie de <code>dir</code> contient
- la chaîne de caractères "<<code>dir</code>>", ce qui trompe le
- navigateur.</p>
-
- <p>Notez que cette fonctionnalité est très dangereuse, car elle va
- permettre d'exécuter tout code associé à l'élément
- <code>exec</code>. Si vous êtes dans la situation où les
- utilisateurs peuvent éditer le contenu de vos pages web, dans le cas
- d'un "livre d'or" par exemple, assurez-vous de désactiver cette
- fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver
- la fonctionnalité <code>exec</code> à l'aide de l'argument
- <code>IncludesNOEXEC</code> de la directive
- <code>Options</code>.</p>
- </section>
+
<section id="advanced">
<title>Techniques SSI avancées</title>
- <p>Outre l'affichage de contenu, les SSI d'Apache vous permettent de
- définir des variables, et de les utiliser dans des comparaisons et
- des conditions.</p>
+ <p>Au-delà de la simple inclusion de contenu, les SSI prennent en charge les
+ variables et les expressions conditionnelles, rendant possible la génération
+ de contenus différents en fonction du contexte de la requête.</p>
<section id="variables"><title>Définition de variables</title>
- <p>Avec l'élément <code>set</code>, vous pouvez définir des
- variables pour un usage ultérieur. Comme nous en aurons besoin plus
- loin, nous allons en parler tout de suite. La syntaxe se présente
- comme suit :</p>
+ <p>La directive <code>set</code> permet de définir des variables à utiliser
+ plus tard dans la page :</p>
+
<example>
- <!--#set var="name" value="Rich" -->
+<highlight language="html">
+<!--#set var="name" value="Rich" -->
+</highlight>
</example>
- <p>Pour affecter une valeur à vos variables, en plus de la
- définition litté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écrites plus haut (comme <code>LAST_MODIFIED</code> par exemple).
- Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous
- devez utiliser le symbole dollar ($) devant le nom de la
- variable.</p>
+ <p>Les variables peuvent référencer d’autres variables (y compris des <a
+ href="../env.html">variables d’environnement</a>) en utilisant le signe dollar
+ (<code>$</code>) comme préfixe :</p>
- <example> <!--#set var="modified" value="$LAST_MODIFIED" -->
- </example>
+<example>
+<highlight language="html">
+<!--#set var="modified" value="$LAST_MODIFIED" -->
+</highlight>
+</example>
+
+ <p>Pour inclure un signe dollar littéral, protégez-le avec une
+ contre-oblique :</p>
- <p>Pour insérer un caractère $ dans la valeur de votre variable,
- vous devez l'échapper à l'aide d'un backslash.</p>
<example>
- <!--#set var="cost" value="\$100" -->
+<highlight language="html">
+<!--#set var="cost" value="\$100" -->
+</highlight>
</example>
- <p>Enfin, si vous voulez insérer une variable dans une chaîne, et
- s'il y a une chance pour que le nom de la variable se confonde avec
- le reste de la chaî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ère que vous comprendrez).</p>
+ <p>Lorsqu'un nom de variable risque d'être ambigu au sein d'une chaîne plus
+ longue, utilisez des accolades pour le délimiter :</p>
+
<example>
- <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
+<highlight language="html">
+<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
+</highlight>
</example>
</section>
<section id="conditional">
<title>Expressions conditionnelles</title>
- <p>Maintenent que nous avons des variables, et que nous pouvons
- définir et comparer leurs valeurs, nous sommes à même de les
- utiliser dans des expressions conditionnelles. Ceci confère à SSI le
- statut de petit langage de programmation.
- <module>mod_include</module> 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énérer plusieurs pages logiques à partir d'une seule vraie
- page.</p>
-
- <p>La structure de l'expression conditionnelle est :</p>
+ <p><module>mod_include</module> fournit les éléments <code>if</code>,
+ <code>elif</code>, <code>else</code> et <code>endif</code> permettant de
+ construire une logique conditionnelle. Cette fonctionnalité permet de
+ générer des sorties différentes à partir d’une seule page physique.</p>
+
+ <p>La structure est :</p>
+
<example>
- <!--#if expr="condition" --><br />
- <!--#elif expr="condition" --><br />
- <!--#else --><br />
- <!--#endif -->
+<highlight language="html">
+<!--#if expr="test_condition" --><br />
+<!--#elif expr="test_condition" --><br />
+<!--#else --><br />
+<!--#endif -->
+</highlight>
</example>
- <p>Une <em>condition</em> peut revêtir la forme de toute comparaison
- logique - soit une comparaison de valeurs avec une autre, soit une
- vérification de la "vérité" d'une valeur particulière (Une chaîne
- donnée est vraie si elle n'est pas vide). Pour une liste exhaustive
- des opérateurs de comparaison disponibles, voir la documentation du
- module <module>mod_include</module>.</p>
+ <p>Une <em>test_condition</em> peut comparer des valeurs ou vérifier si une
+ variable n’est pas vide. Voir la documentation de
+ <module>mod_include</module> pour la liste complète des opérateurs de
+ comparaison.</p>
- <p>Par exemple, spour insérer l'heure du jour dans votre page web,
- vous pouvez ajouter ces lignes dans la page HTML :</p>
+ <p>Par exemple, pour afficher des salutations différentes en fonction de
+ l’heure du jour :</p>
- <example>
- Good
- <!--#if expr="%{TIME_HOUR} <12" --><br />
- morning!<br />
- <!--#else --><br />
- afternoon!<br />
- <!--#endif --><br />
- </example>
-
- <p>Toute autre variable (que vous avez définie, ou une variable
- d'environnement normale) peut être utilisée dans les expressions
- conditionnelles. Voir le document <a href="../expr.html">Expressions
- rationnelles dans le serveur HTTP Apache</a> pour plus de détails à
- propos du fonctionnement du moteur d'évaluation des expressions
- rationnelles.</p>
-
- <p>Associée à la possibilité avec Apache de définir
- des variables d'environnement à l'aide de directives
- <code>SetEnvIf</code>, ainsi que d'autres directives en rapport,
- cette fonctionnalité vous permet d'ajouter une grande variété
- de contenus dynamiques côté serveur sans avoir à concevoir une
- application web de A à Z.</p>
+<example>
+<highlight language="html">
+Good
+<!--#if expr="%{TIME_HOUR} <12" --><br />
+morning!<br />
+<!--#else --><br />
+afternoon!<br />
+<!--#endif --><br />
+</highlight>
+</example>
+
+ <p>Toute variable — définie par l’utilisateur ou issue de l’environnement
+ — peut être utilisée dans les expressions conditionnelles. Voir <a
+ href="../expr.html">Les expressions dans le Serveur HTTP Apache</a> pour des
+ détails complets à propos du moteur d’évaluation des expressions.</p>
+
+ <p>Combinées avec la capacité de httpd à définir des variables
+ d’environnement en utilisant <directive
+ module="mod_setenvif">SetEnvIf</directive> et les directives apparentées,
+ les SSI conditionnelles peuvent traiter une grande variété de scénarios de
+ contenu dynamique sans nécessiter de cadriciel complet d’applications.</p>
</section>
</section>
<section id="conclusion"><title>Conclusion</title>
- <p>SSI ne remplace certainement pas CGI, ou d'autres technologies
- utilisées pour la génération de pages web dynamiques. Mais c'est une
- bonne méthode pour ajouter des petits contenus dynamiques à vos
- pages, sans devoir fournir un gros effort supplémentaire.</p>
+ <p>Pour les sites principalement statiques mais nécessitant quelques touches
+ dynamiques, les SSI évitent la surcharge de travail induite par la
+ configuration d’une pile complète d’applications. Elles ne requièrent que
+ <module>mod_include</module> et quelques lignes de configuration pour
+ fonctionner.</p>
</section>
</manualpage>