mirror of
https://github.com/apache/httpd.git
synced 2025-05-28 13:41:30 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1340707 13f79535-47bb-0310-9956-ffa450edef68
521 lines
27 KiB
Plaintext
521 lines
27 KiB
Plaintext
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
This file is generated from xml source: DO NOT EDIT
|
|
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
-->
|
|
<title>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"
|
|
(Server Side Includes - SSI) - Serveur Apache HTTP</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.js" type="text/javascript">
|
|
</script>
|
|
|
|
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
|
|
<body id="manual-page"><div id="page-header">
|
|
<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>
|
|
<p class="apache">Serveur Apache HTTP Version 2.5</p>
|
|
<img alt="" src="../images/feather.gif" /></div>
|
|
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
|
|
<div id="path">
|
|
<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.5</a> > <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"
|
|
(Server Side Includes - SSI)</h1>
|
|
<div class="toplang">
|
|
<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> |
|
|
<a href="../fr/howto/ssi.html" title="Français"> fr </a> |
|
|
<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
|
|
<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
|
|
</div>
|
|
|
|
<p>Les SSI permettent d'ajouter du contenu dynamique à des documents
|
|
HTML pré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écution de commandes</a></li>
|
|
<li><img alt="" src="../images/down.gif" /> <a href="#advanced">Techniques SSI avancées</a></li>
|
|
<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusion</a></li>
|
|
</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
|
|
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="related" id="related">Introduction</a></h2>
|
|
<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>
|
|
|
|
<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>
|
|
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="what" id="what">Qu'est-ce que SSI ?</a></h2>
|
|
|
|
<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>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. 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>
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="configuring" id="configuring">Configurer votre serveur pour permettre les SSI</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 à 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 <code class="directive"><a href="../mod/core.html#options">Options</a></code>
|
|
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>
|
|
<pre class="prettyprint lang-config">
|
|
AddType text/html .shtml<br />
|
|
AddOutputFilter INCLUDES .shtml
|
|
</pre>
|
|
|
|
|
|
<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>Une autre méthode consiste à 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 à 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>
|
|
<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 à
|
|
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 <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. 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>
|
|
|
|
<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
|
|
<code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> 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>
|
|
</ol>
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="basic" id="basic">Directives SSI de base</a></h2>
|
|
|
|
<p>Les directives SSI adoptent la syntaxe suivante :</p>
|
|
<div class="example"><p><code>
|
|
<!--#élément attribut=valeur attribut=valeur ... -->
|
|
</code></p></div>
|
|
|
|
<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>"élément" 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>
|
|
|
|
<h3><a name="todaysdate" id="todaysdate">La date courante</a></h3>
|
|
|
|
<div class="example"><p><code>
|
|
<!--#echo var="DATE_LOCAL" -->
|
|
</code></p></div>
|
|
|
|
<p>L'élément <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 l'élément <code>set</code>.</p>
|
|
|
|
<p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous
|
|
pouvez utiliser l'élément <code>config</code> avec un attribut
|
|
<code>timefmt</code>, pour le modifier.</p>
|
|
|
|
<div class="example"><p><code>
|
|
<!--#config timefmt="%A %B %d, %Y" --><br />
|
|
Today is <!--#echo var="DATE_LOCAL" -->
|
|
</code></p></div>
|
|
|
|
|
|
<h3><a name="lastmodified" id="lastmodified">Date de modification du fichier</a></h3>
|
|
|
|
<div class="example"><p><code>
|
|
Dernière modification du document <!--#flastmod file="index.html" -->
|
|
</code></p></div>
|
|
|
|
<p>Le format peut là aussi être modifié à l'aide de l'attribut
|
|
<code>timefmt</code>.</p>
|
|
|
|
|
|
<h3><a name="cgi" id="cgi">Inclusion des résultats d'un programme CGI</a></h3>
|
|
|
|
<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>
|
|
|
|
<div class="example"><p><code>
|
|
<!--#include virtual="/cgi-bin/counter.pl" -->
|
|
</code></p></div>
|
|
|
|
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="additionalexamples" id="additionalexamples">Exemples additionnels</a></h2>
|
|
|
|
|
|
<p>Vous trouverez dans ce qui suit quelques exemples spécifiques de
|
|
ce que vous pouvez faire de vos documents HTML avec SSI.</p>
|
|
|
|
<h3><a name="docmodified" id="docmodified">Quand ce document a-t-il été modifié ?</a></h3>
|
|
|
|
<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>
|
|
<div class="example"><p><code>
|
|
<!--#config timefmt="%A %B %d, %Y" --><br />
|
|
Dernière modification du fichier <!--#flastmod file="ssi.shtml" -->
|
|
</code></p></div>
|
|
|
|
<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>
|
|
<div class="example"><p><code>
|
|
<!--#config timefmt="%D" --><br />
|
|
This file last modified <!--#echo var="LAST_MODIFIED" -->
|
|
</code></p></div>
|
|
|
|
<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>
|
|
|
|
|
|
<h3><a name="standard-footer" id="standard-footer">Inclusion d'un pied de page standard</a></h3>
|
|
|
|
|
|
<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, l'élément <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>
|
|
<div class="example"><p><code>
|
|
<!--#include virtual="/footer.html" -->
|
|
</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é à ê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>
|
|
|
|
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="config" id="config">Que puis-je configurer d'autre ?</a></h2>
|
|
|
|
|
|
<p>En plus du format de date, vous pouvez utiliser l'élément
|
|
<code>config</code> pour configurer deux autres choses.</p>
|
|
|
|
<p>En géné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 l'élément <code>config</code> :</p>
|
|
<div class="example"><p><code>
|
|
<!--#config errmsg="[Il semblerait que vous ne sachiez pas
|
|
utiliser les SSI]" -->
|
|
</code></p></div>
|
|
|
|
<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>
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="exec" id="exec">Exécution de commandes</a></h2>
|
|
|
|
|
|
<p>J'ai pour projet, dans les prochains mois, d'écrire un article à
|
|
propos de l'utilisation des SSI avec des petits programmes CGI. Pour
|
|
l'instant, voici ce que vous pouvez faire avec l'élément
|
|
<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>
|
|
<div class="example"><p><code>
|
|
<pre><br />
|
|
<!--#exec cmd="ls" --><br />
|
|
</pre>
|
|
</code></p></div>
|
|
|
|
<p>ou, sous Windows</p>
|
|
<div class="example"><p><code>
|
|
<pre><br />
|
|
<!--#exec cmd="dir" --><br />
|
|
</pre>
|
|
</code></p></div>
|
|
|
|
<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>
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="advanced" id="advanced">Techniques SSI avancées</a></h2>
|
|
|
|
|
|
<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>
|
|
|
|
<h3><a name="variables" id="variables">Définition de variables</a></h3>
|
|
|
|
<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>
|
|
<div class="example"><p><code>
|
|
<!--#set var="name" value="Rich" -->
|
|
</code></p></div>
|
|
|
|
<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>
|
|
|
|
<div class="example"><p><code> <!--#set var="modified" value="$LAST_MODIFIED" -->
|
|
</code></p></div>
|
|
|
|
<p>Pour insérer un caractère $ dans la valeur de votre variable,
|
|
vous devez l'échapper à l'aide d'un backslash.</p>
|
|
<div class="example"><p><code>
|
|
<!--#set var="cost" value="\$100" -->
|
|
</code></p></div>
|
|
|
|
<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>
|
|
<div class="example"><p><code>
|
|
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
|
|
</code></p></div>
|
|
|
|
|
|
<h3><a name="conditional" id="conditional">Expressions conditionnelles</a></h3>
|
|
|
|
|
|
<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.
|
|
<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énérer plusieurs pages logiques à partir d'une seule vraie
|
|
page.</p>
|
|
|
|
<p>La structure de l'expression conditionnelle est :</p>
|
|
<div class="example"><p><code>
|
|
<!--#if expr="condition" --><br />
|
|
<!--#elif expr="condition" --><br />
|
|
<!--#else --><br />
|
|
<!--#endif -->
|
|
</code></p></div>
|
|
|
|
<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 <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>. Voici quelques exemples
|
|
illustrant l'utilisation de ces expressions.</p>
|
|
|
|
<p>Vous pouvez ajouter les lignes suivantes dans votre fichier de
|
|
configuration :</p>
|
|
<pre class="prettyprint lang-config">
|
|
BrowserMatchNoCase macintosh Mac<br />
|
|
BrowserMatchNoCase MSIE InternetExplorer
|
|
</pre>
|
|
|
|
|
|
<p>Ces lignes définissent les variables d'environnement "Mac" et
|
|
"InternetExplorer" à true, si le client utilise InternetExplorer sur
|
|
un Macintosh.</p>
|
|
|
|
<p>Puis, dans votre document où les SSI sont activées, vous ajoutez
|
|
ceci :</p>
|
|
<div class="example"><p><code>
|
|
<!--#if expr="-T reqenv('Mac') &&
|
|
-T reqenv('InternetExplorer')" --><br />
|
|
Un texte d'excuses est inséré ici<br />
|
|
<!--#else --><br />
|
|
Ici se trouve du code JavaScipt sympa<br />
|
|
<!--#endif -->
|
|
</code></p></div>
|
|
|
|
<p>Notez que je n'ai rien contre IE sur Macintosh - J'ai juste
|
|
phosphoré quelques heures la semaine dernière pour faire fonctionner
|
|
du JavaScript sous IE sur Macintosh, alors qu'il fonctionnait sous
|
|
tout autre environnement. Ce qui précède a constitué un
|
|
contournement provisoire.</p>
|
|
|
|
<p>Toute autre variable (que vous avez définie, ou une variable
|
|
d'environnement normale) peut être utilisée dans les expressions
|
|
conditionnelles. 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 des contenus dynamiques
|
|
assez évolués sans avoir recours aux programmes CGI.</p>
|
|
|
|
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
|
|
<div class="section">
|
|
<h2><a name="conclusion" id="conclusion">Conclusion</a></h2>
|
|
|
|
<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>
|
|
</div></div>
|
|
<div class="bottomlang">
|
|
<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English"> en </a> |
|
|
<a href="../fr/howto/ssi.html" title="Français"> fr </a> |
|
|
<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
|
|
<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
|
|
</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>This section is experimental!</strong><br />Comments placed here should not be expected
|
|
to last beyond the testing phase of this system, nor do we in any way guarantee that we'll read them.</div>
|
|
<script type="text/javascript"><!--//--><![CDATA[//><!--
|
|
var disqus_shortname = 'httpd';
|
|
var disqus_identifier = 'http://httpd.apache.org/docs/2.4/howto/ssi.html.fr';
|
|
(function(w, d) {
|
|
var disabled = true;
|
|
if (w.location.hostname.toLowerCase() == "httpd.apache.org" && disabled !== true) {
|
|
d.write('<div id="disqus_thread"><\/div>');
|
|
var s = d.createElement('script');
|
|
s.type = 'text/javascript';
|
|
s.async = true;
|
|
s.src = 'http' + '://' + disqus_shortname + '.disqus.com/embed.js';
|
|
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
|
|
}
|
|
else {
|
|
d.write('<div id="disqus_thread">Comments are disabled for this page at the moment.<\/div>');
|
|
}
|
|
})(window, document);
|
|
//--><!]]></script></div><div id="footer">
|
|
<p class="apache">Copyright 2012 The Apache Software Foundation.<br />Autorisé sous <a href="http://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/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[//><!--
|
|
if (typeof(prettyPrint) !== 'undefined') {
|
|
prettyPrint();
|
|
}
|
|
//--><!]]></script>
|
|
</body></html> |