e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
0a05fab9aadd37834734ffe106fc8ad4488fb3e3rbowen<!-- English Revision: 1646392:1673947 (outdated) -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<!-- French translation : Lucien GENTIS -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<!-- Reviewed by : Vincent Deffontaines -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Licensed to the Apache Software Foundation (ASF) under one or more
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor contributor license agreements. See the NOTICE file distributed with
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor this work for additional information regarding copyright ownership.
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor The ASF licenses this file to You under the Apache License, Version 2.0
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor (the "License"); you may not use this file except in compliance with
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor the License. You may obtain a copy of the License at
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Unless required by applicable law or agreed to in writing, software
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor distributed under the License is distributed on an "AS IS" BASIS,
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor See the License for the specific language governing permissions and
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor limitations under the License.
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<parentdocument href="./">Recettes et tutoriels</parentdocument>
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis<title>Tutoriel Apache httpd : Introduction aux "Inclusions Côté Serveur"
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor(Server Side Includes - SSI)</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<p>Les SSI permettent d'ajouter du contenu dynamique à des documents
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzorHTML préexistants.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <modulelist>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor </modulelist>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <directivelist>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <directive module="mod_setenvif">BrowserMatchNoCase</directive>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor </directivelist>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Cet article traite des Inclusions Côté Serveur (Server Side
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Includes), plus communément appelés SSI. Vous trouverez ici la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor manière de configurer votre serveur pour permettre les SSI, ainsi
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor qu'une introduction à quelques techniques SSI de base permettant
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>La dernière partie de cet article sera consacrée aux
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor configurations SSI plus avancées, telles que les expressions
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor conditionnelles dans les directives SSI.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>SSI (Server Side Includes) est constitué de directives placées dans
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor des pages HTML, et évaluées par le serveur au moment où les pages
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor sont servies. Elles vous permettent d'ajouter du contenu généré
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor dynamiquement à une page HTML préexistante, sans avoir à servir la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor page entière via un programme CGI, ou toute autre technologie de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor contenu dynamique.</p>
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis <p>Par exemple, vous pouvez insérer la directive suivante dans une
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis page HTML existante :</p>
739ce874d738594946c2725c8ee01ef504720991lgentis <!--#echo var="DATE_LOCAL" -->
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis <p>Ainsi, lorsque la page sera servie, la directive sera évaluée et
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis remplacée par sa valeur :</p>
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis Tuesday, 15-Jan-2013 19:28:54 EST
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Le choix entre l'utilisation des SSI et la génération entière de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor la page par un programme quelconque, est en général dicté par la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor proportion de contenu statique et de contenu devant être généré
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor chaque fois que la page est servie. SSI est idéal pour ajouter de
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis petites quantités d'information, comme l'heure courante dans
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis l'exemple précédent. Mais si la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor plus grande partie de votre page est générée au moment où elle est
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor servie, vous devez vous tourner vers une autre solution.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<title>Configurer votre serveur pour permettre les SSI</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Pour permettre l'utilisation des SSI sur votre serveur, vous
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor devez ajouter la directive suivante dans votre fichier
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>httpd.conf</code>, ou dans un fichier <code>.htaccess</code>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Options +Includes
d89089206f40f9a6d58528ff85050447d4a52d53lgentis</highlight>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Cette directive indique à Apache que vous désirez permettre la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor recherche de directives SSI lors de l'interprétation des fichiers.
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Notez cependant que la plupart des configurations contiennent de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor nombreuses directives <directive module="core">Options</directive>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor qui peuvent s'écraser les unes les autres. Vous devrez probablement
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor appliquer ces directives <code>Options</code> au répertoire
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor qu'elles y seront bien activées.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Tout fichier ne fera cependant pas l'objet de recherche de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor directives SSI. Vous devez indiquer à Apache quels fichiers seront
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor concernés. Vous pouvez y parvenir en indiquant une extension, comme
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>.shtml</code>, à l'aide des directives suivantes :</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor AddOutputFilter INCLUDES .shtml
d89089206f40f9a6d58528ff85050447d4a52d53lgentis</highlight>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Un des désavantages de cette approche réside dans le fait que si
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor vous voulez ajouter des directives SSI à une page préexistante, vous
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor devrez changer le nom de cette page, et donc tout lien qui la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor contient, de façon à ce qu'elle possède l'extension
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>.shtml</code>, condition nécessaire pour que les directives
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor SSI qu'elle contient soient traitées.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Une autre méthode consiste à utiliser la directive <directive
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor XBitHack on
d89089206f40f9a6d58528ff85050447d4a52d53lgentis</highlight>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>La directive <directive module="mod_include">XBitHack</directive>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor indique à Apache qu'il doit rechercher des directivves SSI dans les
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor nécessaire de changer le nom du fichier pour ajouter des directives
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor SSI à une page préexistante ; vous devez simplement attribuer les
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor droits d'exécution au fichier à l'aide de <code>chmod</code>.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Un bref commentaire sur ce qu'il ne faut pas faire. Certaines
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor personnes peuvent vous conseiller de tout simplement indiquer à
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Apache de rechercher des directives SSI dans tous les fichiers
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor fichiers avec extension <code>.shtml</code>. Ils n'ont probablement
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor pas entendu parler de la directive <directive
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor module="mod_include">XBitHack</directive>. En effet, vous devez
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor des directives SSI dans chaque fichier qu'il sert, même s'il n'en
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor contient aucune. Ce n'est donc pas une bonne idée car les
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor performances peuvent en être sensiblement affectées.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor positionner, ce qui limite un peu vos choix.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Dans sa configuration par défaut, Apache n'envoie pas la date de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor dernière modification ou les en-têtes HTTP relatifs à la taille des
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor contenus dans les pages SSI, car ses valeurs sont difficiles à
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor calculer pour les contenus dynamiques. Ceci peut induire une
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor impression de diminution des performances côté client, en empêchant
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor la mise en cache de votre document. Il existe deux méthodes pour
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor résoudre ce problème :</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <li>Utilisez la configuration <code>XBitHack Full</code>. Elle
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor indique à Apache de déterminer la date de dernière modification en
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor ne regardant que la date du fichier à l'origine de la requête,
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor tout en ignorant la date de modification de tout fichier inclus.</li>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <li>Utilisez les directives fournies par le module
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <module>mod_expires</module> pour définir de manière explicite la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor date d'expiration de vos fichiers, laissant par la-même
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor aux navigateurs et aux mandataires le soin de déterminer s'il est
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor opportun ou non de les mettre en cache.</li>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<section id="basic"><title>Directives SSI de base</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Les directives SSI adoptent la syntaxe suivante :</p>
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis <!--#fonction attribut=valeur attribut=valeur ... -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Le format d'une directive SSI étant similaire à celui d'un
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor commentaire HTML, si vous n'avez pas activé correctement SSI, le
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor navigateur l'ignorera, mais elle sera encore visible dans le source
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor HTML. Si SSI est correctement configuré, la directive sera remplacée
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor par ses résultats.</p>
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis <p>"fonction" peut prendre de nombreuses formes, et nous décrirons
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor plus précisément la plupart d'entre eux dans la prochaine version de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor ce document. Pour le moment, voici quelques exemples de ce que vous
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor pouvez faire avec SSI.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<section id="todaysdate"><title>La date courante</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#echo var="DATE_LOCAL" -->
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis <p>La fonction <code>echo</code> permet d'afficher la valeur d'une
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor variable. Il existe un grand nombre de variables standards, y
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor compris l'ensemble des variables d'environnement disponibles pour
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor les programmes CGI. De plus, vous pouvez définir vos propres
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis variables à l'aide de la fonction <code>set</code>.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis pouvez utiliser la fonction <code>config</code> avec un attribut
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#config timefmt="%A %B %d, %Y" --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Today is <!--#echo var="DATE_LOCAL" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<section id="lastmodified"><title>Date de modification du fichier</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Dernière modification du document <!--#flastmod file="index.html" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Le format peut là aussi être modifié à l'aide de l'attribut
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<section id="cgi"><title>Inclusion des résultats d'un programme CGI</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>C'est le cas le plus courant d'utilisation des SSI - afficher les
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor résultats d'un programme CGI, comme l'universellement adoré
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor "compteur d'accès".</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor ce que vous pouvez faire de vos documents HTML avec SSI.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<section id="docmodified"><title>Quand ce document a-t-il été modifié ?</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Nous avons mentionné plus haut que vous pouviez utiliser SSI pour
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor informer l'utilisateur de la date de dernière modification du
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor document. Cependant, la méthode pour y parvenir n'a pas été vraiment
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor abordée. Placé dans votre document HTML, le code suivant va insérer
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor un repère de temps dans votre page. Bien entendu, SSI devra avoir
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor été correctement activé, comme décrit plus haut.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#config timefmt="%A %B %d, %Y" --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Dernière modification du fichier <!--#flastmod file="ssi.shtml" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> par le
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor nom du fichier auquel vous faites référence. Ceci ne conviendra pas
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor si vous recherchez un morceau de code générique que vous pourrez
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor insérer dans tout fichier ; dans ce cas, il est préférable
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor d'utiliser la variable <code>LAST_MODIFIED</code> :</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#config timefmt="%D" --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor This file last modified <!--#echo var="LAST_MODIFIED" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Pour plus de détails sur le format <code>timefmt</code>, tapez
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>strftime</code> dans votre moteur de recherche préferé. La
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor syntaxe est identique.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Si le site que vous gérez comporte plus que quelques pages, vous
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor allez vite vous apercevoir qu'effectuer des modifications sur toutes
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor ces pages peut devenir très contraignant, en particulier si vous
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor voulez qu'elles conservent un aspect homogène.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Inclure un fichier pour un en-tête et/ou un pied de page peut
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor simplifier cette corvée de mises à jour. Il vous suffit de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor confectionner un fichier de pied de page, et de l'inclure dans
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor chaque page à l'aide de l'élément SSI <code>include</code>. Pour
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis définir le fichier à inclure, la fonction <code>include</code> peut
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor utiliser soit l'attribut <code>file</code>, soit l'attribut
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>virtual</code>. L'attribut <code>file</code> est un chemin de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor fichier <em>relatif au répertoire courant</em>. C'est à dire qu'il
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor comporter "../" dans son chemin. L'attribut <code>virtual</code> est
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor probablement plus commode, et peut spécifier une URL relative au
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor document servi. Elle peut commencer par un /, mais le fichier inclus
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor et le fichier servi doivent résider sur le même serveur.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#include virtual="/footer.html" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Je combinerai souvent ces deux derniers points, en ajoutant une
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor directive <code>LAST_MODIFIED</code> dans un fichier de pied de page
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor destiné à être inclus. Le fichier inclus peut contenir des
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor directives SSI, et les inclusions peuvent être imbriquées - à
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor savoir, le fichier inclus peut inclure un autre fichier, etc...</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>En plus du format de date, vous pouvez utiliser l'élément
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>config</code> pour configurer deux autres choses.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>En général, lorsque quelque chose se passe mal avec votre
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor directive SSI, vous recevez le message :</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor [an error occurred while processing this directive]
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Pour modifier ce message, vous pouvez utiliser l'attribut
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis <code>errmsg</code> avec la fonction <code>config</code> :</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#config errmsg="[Il semblerait que vous ne sachiez pas
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor utiliser les SSI]" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Il est cependant probable que les utilisateurs finaux ne voient
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor jamais ce message, car vous aurez résolu tous les problèmes issus de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor vos directives SSI avant que votre site ne soit mis en production.
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor (N'est-ce pas ?)</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Vous pouvez aussi modifier le format sous lequel les tailles de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor fichiers sont affichées à l'aide de l'attribut <code>sizefmt</code>.
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Vous pouvez spécifier <code>bytes</code> pour un affichage en
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor octets, ou <code>abbrev</code> pour un affichage plus concis en Ko
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor ou Mo, selon le cas.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>J'ai pour projet, dans les prochains mois, d'écrire un article à
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor propos de l'utilisation des SSI avec des petits programmes CGI. Pour
292d19d4d33644d88dfb182cdcfef173fafa6722lgentis l'instant, voici ce que vous pouvez faire avec la fonction
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>exec</code>. Vous pouvez vraiment faire exécuter une commande
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor par SSI en utilisant le shell (<code>/bin/sh</code>, pour être plus
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor qui suit vous permet d'afficher le contenu d'un répertoire.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <pre><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#exec cmd="ls" --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor </pre>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <pre><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#exec cmd="dir" --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor </pre>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Vous noterez probablement l'étrange formatage provoqué par cette
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor directive sous Windows, car la sortie de <code>dir</code> contient
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor la chaîne de caractères "<<code>dir</code>>", ce qui trompe le
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor navigateur.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Notez que cette fonctionnalité est très dangereuse, car elle va
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor permettre d'exécuter tout code associé à l'élément
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>exec</code>. Si vous êtes dans la situation où les
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor utilisateurs peuvent éditer le contenu de vos pages web, dans le cas
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor d'un "livre d'or" par exemple, assurez-vous de désactiver cette
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor la fonctionnalité <code>exec</code> à l'aide de l'argument
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Outre l'affichage de contenu, les SSI d'Apache vous permettent de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor définir des variables, et de les utiliser dans des comparaisons et
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor des conditions.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor<section id="variables"><title>Définition de variables</title>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Avec l'élément <code>set</code>, vous pouvez définir des
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor variables pour un usage ultérieur. Comme nous en aurons besoin plus
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor loin, nous allons en parler tout de suite. La syntaxe se présente
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor comme suit :</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#set var="name" value="Rich" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Pour affecter une valeur à vos variables, en plus de la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor définition littérale de l'exemple ci-dessus, vous pouvez utiliser
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor une autre variable, y compris les <a
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor href="/env.html">variables d'environnement</a>, ou les variables
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor décrites plus haut (comme <code>LAST_MODIFIED</code> par exemple).
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor devez utiliser le symbole dollar ($) devant le nom de la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor variable.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <example> <!--#set var="modified" value="$LAST_MODIFIED" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Pour insérer un caractère $ dans la valeur de votre variable,
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor vous devez l'échapper à l'aide d'un backslash.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#set var="cost" value="\$100" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Enfin, si vous voulez insérer une variable dans une chaîne, et
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor s'il y a une chance pour que le nom de la variable se confonde avec
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor le reste de la chaîne, vous pouvez l'entourer d'accolades pour
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor eviter toute confusion (Il est difficile de trouver un bon exemple
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor pour illustrer ceci, mais j'espère que vous comprendrez).</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Maintenent que nous avons des variables, et que nous pouvons
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor définir et comparer leurs valeurs, nous sommes à même de les
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor utiliser dans des expressions conditionnelles. Ceci confère à SSI le
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor statut de petit langage de programmation.
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <module>mod_include</module> fournit une structure <code>if</code>,
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>elif</code>, <code>else</code>, <code>endif</code> pour la
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor construction d'expressions conditionnelles, ce qui vous permet de
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor générer plusieurs pages logiques à partir d'une seule vraie
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>La structure de l'expression conditionnelle est :</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#if expr="condition" --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#elif expr="condition" --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#else --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <!--#endif -->
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Une <em>condition</em> peut revêtir la forme de toute comparaison
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor logique - soit une comparaison de valeurs avec une autre, soit une
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor vérification de la "vérité" d'une valeur particulière (Une chaîne
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor donnée est vraie si elle n'est pas vide). Pour une liste exhaustive
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor des opérateurs de comparaison disponibles, voir la documentation du
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis <p>Par exemple, spour insérer l'heure du jour dans votre page web,
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis vous pouvez ajouter ces lignes dans la page HTML :</p>
1a5f1f993fc268586c5524d2c311560682a90e64lgentis <!--#if expr="%{TIME_HOUR} <12" --><br />
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis morning!<br />
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis <!--#else --><br />
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis afternoon!<br />
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis <!--#endif --><br />
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>Toute autre variable (que vous avez définie, ou une variable
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor d'environnement normale) peut être utilisée dans les expressions
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis conditionnelles. Voir le document <a href="/expr.html">Expressions
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis rationnelles dans le serveur HTTP Apache</a> pour plus de détails à
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis propos du fonctionnement du moteur d'évaluation des expressions
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis rationnelles.</p>
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis <p>Associée à la possibilité avec Apache de définir
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor des variables d'environnement à l'aide de directives
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <code>SetEnvIf</code>, ainsi que d'autres directives en rapport,
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis cette fonctionnalité vous permet d'ajouter une grande variété
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis de contenus dynamiques côté serveur sans avoir à concevoir une
9cb3d98ef8a6e83f1da3e083bd9d6958376f8fe2lgentis application web de A à Z.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor <p>SSI ne remplace certainement pas CGI, ou d'autres technologies
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor utilisées pour la génération de pages web dynamiques. Mais c'est une
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor bonne méthode pour ajouter des petits contenus dynamiques à vos
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor pages, sans devoir fournir un gros effort supplémentaire.</p>
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor</manualpage>