]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_include.html.fr
Merge in APR[-util] macros from branches/trunk-buildconf-noapr
[apache] / docs / manual / mod / mod_include.html.fr
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>mod_include - Serveur Apache HTTP Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <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" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body>
19 <div id="page-header">
20 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.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>
21 <p class="apache">Serveur Apache HTTP Version 2.5</p>
22 <img alt="" src="../images/feather.png" /></div>
23 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
24 <div id="path">
25 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Module Apache mod_include</h1>
28 <div class="toplang">
29 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_include.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
30 <a href="../fr/mod/mod_include.html" title="Français">&nbsp;fr&nbsp;</a> |
31 <a href="../ja/mod/mod_include.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
32 </div>
33 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Documents html interprétés par le serveur (Server Side
34 Includes ou SSI)</td></tr>
35 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
36 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>include_module</td></tr>
37 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_include.c</td></tr></table>
38 <h3>Sommaire</h3>
39
40     <p>Ce module fournit un filtre qui va traiter les fichiers avant
41     de les envoyer au client. Le traitement est contrôlé via des
42     commentaires SGML spécialement formatés, aussi nommés
43     <dfn>éléments</dfn>. Ces éléments permettent l'insertion
44     conditionnelle de texte, l'inclusion d'autres fichiers ou
45     programmes, ainsi que la définition et l'affichage de variables
46     d'environnement.</p>
47 </div>
48 <div id="quickview"><h3>Sujets</h3>
49 <ul id="topics">
50 <li><img alt="" src="../images/down.gif" /> <a href="#enabling">Activation des SSI</a></li>
51 <li><img alt="" src="../images/down.gif" /> <a href="#pathinfo">PATH_INFO et SSI</a></li>
52 <li><img alt="" src="../images/down.gif" /> <a href="#elements">Eléments disponibles</a></li>
53 <li><img alt="" src="../images/down.gif" /> <a href="#includevars">Variables include</a></li>
54 <li><img alt="" src="../images/down.gif" /> <a href="#substitution">Substitution de variable</a></li>
55 <li><img alt="" src="../images/down.gif" /> <a href="#flowctrl">Eléments de contrôle d'inclusion conditionnelle</a></li>
56 <li><img alt="" src="../images/down.gif" /> <a href="#legacyexpr">Syntaxe des expressions héritée</a></li>
57 </ul><h3 class="directives">Directives</h3>
58 <ul id="toc">
59 <li><img alt="" src="../images/down.gif" /> <a href="#ssiendtag">SSIEndTag</a></li>
60 <li><img alt="" src="../images/down.gif" /> <a href="#ssierrormsg">SSIErrorMsg</a></li>
61 <li><img alt="" src="../images/down.gif" /> <a href="#ssietag">SSIETag</a></li>
62 <li><img alt="" src="../images/down.gif" /> <a href="#ssilastmodified">SSILastModified</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#ssilegacyexprparser">SSILegacyExprParser</a></li>
64 <li><img alt="" src="../images/down.gif" /> <a href="#ssistarttag">SSIStartTag</a></li>
65 <li><img alt="" src="../images/down.gif" /> <a href="#ssitimeformat">SSITimeFormat</a></li>
66 <li><img alt="" src="../images/down.gif" /> <a href="#ssiundefinedecho">SSIUndefinedEcho</a></li>
67 <li><img alt="" src="../images/down.gif" /> <a href="#xbithack">XBitHack</a></li>
68 </ul>
69 <h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_include">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_include">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
70 <ul class="seealso">
71 <li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
72 <li><code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code></li>
73 <li><a href="../filter.html">Les filtres</a></li>
74 <li><a href="../howto/ssi.html">Tutoriel SSI</a></li>
75 <li><a href="#comments_section">Commentaires</a></li></ul></div>
76 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
77 <div class="section">
78 <h2><a name="enabling" id="enabling">Activation des SSI</a></h2>
79     
80
81     <p>Les SSI sont implémentés par le <a href="../filter.html">filtre</a> <code>INCLUDES</code>. Si des
82     documents contenant des directives SSI possèdent une extension
83     .shtml, les directives suivantes indiqueront à Apache de les
84     interpréter et d'assigner le type MIME
85     <code>text/html</code> au document obtenu :</p>
86
87     <pre class="prettyprint lang-config">AddType text/html .shtml
88 AddOutputFilter INCLUDES .shtml</pre>
89
90
91     <p>L'option suivante doit être définie pour les répertoires qui
92     contiennent les fichiers shtml (en général dans une section
93     <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, mais
94     cette option peut également être définie dans un fichier
95     <code>.htaccess</code> si <code><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> Options</code> a été défini pour le
96     répertoire considéré) :</p>
97
98     <pre class="prettyprint lang-config">Options +Includes</pre>
99
100
101     <p>Pour des raisons de compatibilité ascendante, le <a href="../handler.html">gestionnaire</a>  <code>server-parsed</code>
102     peut aussi activer le filtre INCLUDES. Ainsi, Apache va activer le
103     filtre INCLUDES pour tout document de type MIME
104     <code>text/x-server-parsed-html</code> ou
105     <code>text/x-server-parsed-html3</code> (et le document obtenu aura
106     pour type MIME <code>text/html</code>).</p>
107
108     <p>Pour plus d'informations, voyez notre <a href="../howto/ssi.html">Tutoriel SSI</a>.</p>
109 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
110 <div class="section">
111 <h2><a name="pathinfo" id="pathinfo">PATH_INFO et SSI</a></h2>
112     
113
114     <p>Les fichiers traités dans le cadre des SSI n'acceptent plus par
115     défaut les requêtes avec <code>PATH_INFO</code> (les informations
116     relatives au chemin en fin de requête). La directive <code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code> permet de configurer le
117     serveur de façon à ce qu'il accepte ce genre de requête.</p>
118 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
119 <div class="section">
120 <h2><a name="elements" id="elements">Eléments disponibles</a></h2>
121     <p>Le document est interprété comme un document HTML, avec des
122     commandes spéciales incluses sous forme de commentaires SGML. La
123     syntaxe d'une commande est la suivante : </p>
124
125     <div class="example"><p><code>
126       &lt;!--#<var>élément</var> <var>attribut</var>=<var>valeur</var>
127       <var>attribut</var>=<var>valeur</var> ... --&gt;
128     </code></p></div>
129
130     <p>Les valeurs sont souvent entourées de guillemets, mais on peut
131     aussi utiliser des apostrophes (<code>'</code>) ou des apostrophes
132     inverses (<code>`</code>). De nombreuses commandes n'acceptent
133     qu'une seule paire attribut-valeur. Notez que le terminateur de
134     commentaire (<code>--&gt;</code>) doit être précédé d'un espace afin
135     d'être sûr qu'il ne soit pas considéré comme un élément de commande
136     SSI. Notez aussi que le délimiteur de début <code>&lt;!--#</code>
137     est <em>un</em> élément de commande et ne doit donc pas contenir
138     d'espace.</p>
139
140     <p>La table suivante contient la liste des éléments autorisés :</p>
141
142     <table class="bordered">
143     <tr><th>Elément</th><th>Description</th></tr>
144     <tr><td><code><a href="#element.comment">comment</a></code></td>
145         <td>commentaire SSI</td></tr>
146     <tr><td><code><a href="#element.config">config</a></code></td>
147         <td>configure les formats de sortie</td></tr>
148     <tr><td><code><a href="#element.echo">echo</a></code></td>
149         <td>affiche le contenu de variables</td></tr>
150     <tr><td><code><a href="#element.exec">exec</a></code></td>
151         <td>exécute des programmes externes</td></tr>
152     <tr><td><code><a href="#element.fsize">fsize</a></code></td>
153         <td>affiche la taille d'un fichier</td></tr>
154     <tr><td><code><a href="#element.flastmod">flastmod</a></code></td>
155         <td>affiche la date de dernière modification d'un fichier</td></tr>
156     <tr><td><code><a href="#element.include">include</a></code></td>
157         <td>inclut un fichier</td></tr>
158     <tr><td><code><a href="#element.printenv">printenv</a></code></td>
159         <td>affiche toutes les variables disponibles</td></tr>
160     <tr><td><code><a href="#element.set">set</a></code></td>
161         <td>définit la valeur d'une variable</td></tr>
162     </table>
163
164     <p>Les éléments SSI peuvent être définis par d'autres modules que
165     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>. À ce titre, l'élément <code><a href="#element.exec">exec</a></code> est fourni par
166     <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>, et ne sera disponible que si ce module est
167     chargé.</p>
168
169     <h3><a name="element.comment" id="element.comment">L'élément comment</a></h3>
170       <p>Cette commande n'affiche aucune information. Elle n'a pour but que
171       l'ajout de commentaires dans un fichier et ces commentaires ne sont pas
172       affichés.</p>
173
174       <p>Cette syntaxe est disponible à partir de la version 2.4.21 du serveur
175       HTTP Apache.</p>
176
177       <div class="example"><p><code>
178       &lt;!--#comment Blah Blah Blah --&gt;
179       </code></p></div>
180      
181     
182     <h3><a name="element.config" id="element.config">L'élément config</a></h3>
183       <p>Cette commande contrôle divers aspects de l'interprétation. Les
184       attributs valides sont :</p>
185
186       <dl>
187       <dt><code>echomsg</code> (<em>Versions 2.1 et supérieures
188       d'Apache</em>)</dt>
189       <dd><p>La valeur est un message qui sera envoyé au client si
190       l'élément <code><a href="#element.echo">echo</a></code> tente
191       d'afficher le contenu d'une variable non définie. Cet attribut
192       l'emporte sur toute directive <code class="directive"><a href="#ssiundefinedecho">SSIUndefinedEcho</a></code>.</p>
193
194       <div class="example"><p><code>
195         &lt;!--#config echomsg="[Valeur non définie]" --&gt;
196       </code></p></div>
197
198       </dd>
199
200       <dt><code>errmsg</code></dt>
201       <dd><p>La valeur est un message qui sera envoyé au client si une
202       erreur survient lors de l'interprétation du document. Cet attribut
203       l'emporte sur toute directive <code class="directive"><a href="#ssierrormsg">SSIErrorMsg</a></code>.</p>
204
205       <div class="example"><p><code>
206        &lt;!--#config errmsg="[Zut, quelque chose s'est mal passé.]" --&gt;
207       </code></p></div>
208
209       </dd>
210
211       <dt><code>sizefmt</code></dt>
212       <dd><p>La valeur définit l'unité employée lors de l'affichage de la
213       taille d'un fichier. Les valeurs possibles sont <code>bytes</code>
214       pour une taille en octets, ou <code>abbrev</code> pour une taille
215       en Ko ou Mo selon son importance ; par exemple, une taille de 1024
216       octets sera affichée sous la forme "1K".</p>
217
218       <div class="example"><p><code>
219       &lt;!--#config sizefmt="abbrev" --&gt;
220       </code></p></div>
221
222       </dd>
223
224       <dt><code>timefmt</code></dt>
225       <dd><p>La valeur est une chaîne que pourra utiliser la fonction de la
226       bibliothèque standard <code>strftime(3)</code> lors de l'affichage
227       des dates.</p>
228
229       <div class="example"><p><code>
230       &lt;!--#config timefmt=""%R, %B %d, %Y"" --&gt;
231       </code></p></div>
232
233       </dd>
234       
235       </dl>
236      
237
238     <h3><a name="element.echo" id="element.echo">L'élément echo</a></h3>
239       <p>Cette commande affiche le contenu d'une des <a href="#includevars">variables include</a> définies ci-dessous. Si
240       la variable n'est pas définie, le résultat est déterminé par la
241       valeur de la directive <code class="directive"><a href="#ssiundefinedecho">SSIUndefinedEcho</a></code>. Le format d'affichage des dates est
242       défini par l'attribut <code>timefmt</code> de la commande
243       config.</p>
244
245       <p>Attributs:</p>
246
247       <dl>
248       <dt><code>var</code></dt>
249       <dd>La valeur est le nom de la variable à afficher.</dd>
250
251       <dt><code>decoding</code></dt>
252       <dd><p>Spécifie si Apache doit effectuer un décodage dans la
253       variable avant son traitement ultérieur. La valeur par défaut est
254       <code>none</code>, et dans ce cas, aucun décodage n'est effectué.
255       Si la valeur est <code>url</code>, un décodage de type URL sera
256       effectué (il s'agit du codage de type %-encoding utilisé dans les
257       URLs des liens, etc...). Si la valeur est <code>urlencoded</code>,
258       c'est un décodage des éléments de type
259       application/x-www-form-urlencode (que l'on trouve dans les chaînes
260       de paramètres) qui sera effectué. Si la valeur est
261       <code>base64</code>, un
262       decodage de type base64 sera effectué, et si elle est
263       <code>entity</code>, c'est un décodage des entités HTML qui sera
264       effectué. Ce décodage est effectué avant tout codage ultérieur de
265       la variable. Il est possible d'effectuer plusieurs décodages en
266       spécifiant plusieurs valeurs séparées par des virgules. Les
267       spécifications de décodages restent valables jusqu'au prochain
268       attribut de décodage, ou la fin de l'élément.</p>
269
270       <p>Pour être pris en compte, l'attribut de <code>décodage</code>
271       doit <em>précéder</em> l'attribut <code>var</code> correspondant.</p>
272       </dd>
273
274       <dt><code>encoding</code></dt>
275       <dd><p>Spécifie la manière dont Apache va coder les caractères
276       spéciaux que la variable contient avant leur affichage. S'il est
277       défini à <code>none</code>, aucun codage ne sera effectué. S'il
278       est défini à <code>url</code>, un codage de type URL sera effectué
279       (aussi connu sous le nom de codage avec caractères % , il convient
280       pour les URLS des liens, etc...). S'il est défini à
281       <code>urlencoded</code>, c'est un codage compatible
282       application/x-www-form-urlencoded qui sera effectué (à utiliser
283       dans les chaînes de paramètres). S'il est défini à
284       <code>base64</code>, c'est un encodage de type base64 qui sera
285       effectué. Au début d'un élément
286       <code>echo</code>, la valeur par défaut est définie à
287       <code>entity</code>, ce qui correspond à un codage de type entité
288       (codage qui convient pour un élément HTML de type bloc, comme le
289       paragraphe d'un texte). Cette valeur par défaut peut être modifiée
290       en ajoutant un attribut <code>encoding</code>, qui fera effet
291       jusqu'à la définition d'un nouvel attribut <code>encoding</code>
292       ou la fin de l'élément echo.</p>
293
294       <p>Pour produire son effet, l'attribut <code>encoding</code> doit
295       précéder l'attribut <code>var</code> concerné.</p>
296
297       <div class="warning">
298         Afin de prévenir les attaques de type cross-site scripting, il
299         est recommandé de <em>toujours</em> encoder les données fournies
300         par les utilisateurs.
301       </div>
302
303       <div class="example"><h3>Example</h3><p><code>
304         &lt;!--#echo encoding="entity" var="QUERY_STRING" --&gt;
305       </code></p></div>
306       </dd>
307       </dl>
308      
309
310     <h3><a name="element.exec" id="element.exec">L'élément exec</a></h3>
311       <p>La commande <code>exec</code> exécute la commande shell ou le
312       script spécifié. Elle nécessite le chargement du module
313       <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code>. Si <code class="directive"><a href="../mod/core.html#options">Options</a></code> <code>IncludesNOEXEC</code> est
314       définie, cette commande est désactivée. Les attributs disponibles
315       sont :</p>
316
317       <dl>
318       <dt><code>cgi</code></dt>
319       <dd><p>La valeur spécifie un chemin URL vers le script CGI (encodé
320       avec caractères %). Si le chemin ne commence pas par un slash (/),
321       il est considéré comme relatif au document courant. Le document
322       référencé par ce chemin est invoqué en tant que script CGI, même
323       s'il n'est pas censé être reconnu comme tel par le serveur. Les
324       scripts CGI doivent cependant être activés dans le répertoire qui
325       contient les scripts (via la directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> ou l'<code class="directive"><a href="../mod/core.html#options">Options</a></code> <code>ExecCGI</code>).</p>
326
327       <p>Le <code>PATH_INFO</code> et la chaîne d'arguments
328       (<code>QUERY_STRING</code>) de la requête originale du client sont
329       fournis au script CGI ; ils <em>ne peuvent pas</em> être spécifiés
330       dans le chemin de l'URL. Le script disposera des variables include
331       en plus de l'environnement standard <a href="mod_cgi.html">CGI</a>.</p>
332
333       <div class="example"><h3>Exemple</h3><p><code>
334         &lt;!--#exec cgi="/cgi-bin/exemple.cgi" --&gt;
335       </code></p></div>
336
337       <p>Si, à la place d'un flux de sortie, le script renvoie un
338       en-tête <code>Location:</code>, ce dernier sera traduit en ancrage
339       HTML.</p>
340
341       <p>L'élément <code><a href="#includevirtual">include
342       virtual</a></code> doit être préféré à <code>exec cgi</code>. En
343       particulier, si vous devez transmettre des arguments
344       supplémentaires à un programme CGI en utilisant la chaîne
345       d'arguments de la requête, c'est impossible avec <code>exec
346       cgi</code>, mais vous pouvez y parvenir avec <code>include
347       virtual</code> comme suit :</p>
348
349       <div class="example"><p><code>
350         &lt;!--#include virtual="/cgi-bin/exemple.cgi?argument=valeur" --&gt;
351       </code></p></div>
352       </dd>
353
354       <dt><code>cmd</code></dt>
355       <dd><p>Le serveur va exécuter la commande fournie en utilisant
356       <code>/bin/sh</code>. La commande dispose des <a href="#includevars">variables include</a>, en plus du jeu habituel
357       de variables CGI.</p>
358
359       <p>Il est toujours préférable d'utiliser <code><a href="#includevirtual">#include virtual</a></code> à la place de
360       <code>#exec cgi</code> ou <code>#exec cmd</code>. <code>#include
361       virtual</code> utilise le mécanisme standard des sous-requêtes
362       d'Apache pour inclure des fichiers ou des scripts. Il a fait
363       l'objet de tests plus approfondis et sa maintenance est mieux
364       suivie.</p>
365
366       <p>De plus, sur certaines plate-formes, comme Win32, et sous unix,
367       si l'on utilise <a href="../suexec.html">suexec</a>, il est
368       impossible de transmettre des arguments à une commande dans une
369       directive <code>exec</code>, à moins d'insérer des espaces dans la
370       commande. Ainsi, alors que ce qui suit fonctionnera sous unix avec
371       une configuration sans suexec, l'effet produit ne sera pas celui
372       désiré sous Win32, ou dans le cas de l'utilisation de suexec
373       :</p>
374
375       <div class="example"><p><code>
376         &lt;!--#exec cmd="perl /chemin/vers/script_perl arg1 arg2" --&gt;
377       </code></p></div>
378       </dd>
379       </dl>
380      
381
382     <h3><a name="element.fsize" id="element.fsize">L'élément fsize</a></h3>
383       <p>Cette commande permet d'afficher la taille du fichier spécifié
384       en fonction des spécifications de format de <code>sizefmt</code>.
385       Attributs :</p>
386
387       <dl>
388       <dt><code>file</code></dt>
389       <dd>La valeur est le chemin du fichier, relatif au répertoire
390       contenant le document en cours d'interprétation.
391
392       <div class="example"><p><code>
393         Ce fichier a une taille de &lt;!--#fsize file="mod_include.html"
394         --&gt; octets.
395     </code></p></div>
396
397     La valeur de <code>file</code> ne peut pas faire référence à un
398     fichier situé à un niveau supérieur de l'arborescence du répertoire
399     courant ou en dehors de la racine des documents ; il ne peut donc
400     ni commencer par un slash, ni contenir la séquence de caractères
401     <code>../</code>. Si c'est le cas, le message d'erreur <code>The
402     given path was above the root path</code> sera renvoyé.
403       </dd>
404
405       <dt><code>virtual</code></dt>
406       <dd>La valeur est un chemin URL (codé avec caractères %). S'il ne
407       commence pas par un slash (/), il est considéré comme relatif au
408       document courant. Notez que cette commande n'affiche <em>pas</em>
409       la taille de la sortie d'un programme CGI, mais la taille du
410       programme CGI lui-même.</dd>
411       </dl>
412
413       <div class="example"><p><code>
414         Ce fichier a une taille de &lt;!--#fsize
415         virtual="/docs/mod/mod_include.html" --&gt; octets.
416     </code></p></div>
417
418       <p>Notez que dans la plupart des cas, ces deux attributs sont
419       identiques. Cependant, l'attribut <code>file</code> ne respecte
420       pas les aliases URL-space.</p>
421      
422
423     <h3><a name="element.flastmod" id="element.flastmod">L'élément flastmod</a></h3>
424       <p>Cette commande permet d'afficher la date de dernière
425       modification du fichier spécifié, en fonction des spécifications
426       de format de <code>timefmt</code>. Les attributs sont les mêmes
427       que ceux de la commande <code><a href="#element.fsize">fsize</a></code>.</p>
428      
429
430     <h3><a name="element.include" id="element.include">L'élément include</a></h3>
431       <p>Cette commande permet d'insérer le texte d'un autre document ou
432       fichier dans le fichier en cours d'interprétation. Tout fichier
433       inclus est soumis au contrôle d'accès habituel. Si <a href="core.html#options">Options</a> <code>IncludesNOEXEC</code>
434       est défini pour le répertoire contenant le fichier
435       interprété, seuls les documents possèdant un
436       <a class="glossarylink" href="../glossary.html#type mime" title="voir glossaire">type MIME</a> de type texte
437       (<code>text/plain</code>, <code>text/html</code>, etc...) seront
438       inclus. Les scripts CGI, quant à eux, sont invoqués de manière
439       habituelle en utilisant l'URL complète fournie avec la commande, y
440       compris toute chaîne d'arguments éventuelle.</p>
441
442       <p>Un attribut définit le chemin du document à inclure, et peut
443       apparaître plusieurs fois dans l'élément à inclure ; en retour, pour
444       chaque attribut fourni à la commande include, une inclusion est
445       effectuée. Les attributs disponibles sont :</p>
446
447       <dl>
448       <dt><code>file</code></dt>
449       <dd>La valeur est un chemin relatif au répertoire contenant le
450       fichier en cours d'interprétation. Elle ne peut ni contenir
451       <code>../</code>, ni être un chemin absolu. Ainsi, vous ne pouvez
452       pas inclure de fichiers situés en dehors de l'arborescence du
453       site web ou dans un niveau supérieur à celui du fichier courant
454       dans cette arborescence. Il est toujours préférable d'utiliser
455       l'attribut <code>virtual</code>.</dd>
456
457       <dt><code><a id="includevirtual" name="includevirtual">virtual</a></code></dt>
458       <dd><p>La valeur est un chemin URL (codé avec caractères %). L'URL
459       ne peut contenir qu'un chemin et une chaîne d'arguments
460       éventuelle, à l'exclusion de tout protocole ou nom d'hôte. S'il ne
461       commence pas par un slash (/), il est considéré comme relatif au
462       document courant.</p>
463
464       <p>Une URL est construite à partir de l'attribut, et la sortie que
465       renverrait le serveur si l'URL était accédée par le client est
466       incluse dans la sortie interprétée. Les inclusions de fichiers
467       peuvent ainsi être imbriquées.</p>
468
469       <p>Si l'URL spécifiée correspond à un programme CGI, le programme
470       sera exécuté, et son flux de sortie inséré à la place de la
471       directive dans le fichier interprété. Vous pouvez insérer une
472       chaîne d'arguments dans une URL correspond à un programme CGI
473       :</p>
474
475       <div class="example"><p><code>
476         &lt;!--#include virtual="/cgi-bin/exemple.cgi?argument=valeur" --&gt;
477       </code></p></div>
478
479       <p><code>include virtual</code> doit être préféré à <code>exec
480       cgi</code> pour inclure le flux de sortie d'un programme CGI dans
481       un document HTML.</p>
482
483       <p>Si la directive <code class="directive"><a href="../mod/mod_request.html#keptbodysize">KeptBodySize</a></code> est correctement
484       définie et valide pour le fichier inclus, les tentatives de
485       requêtes POST vers le document HTML qui inclut des fichiers seront
486       transmises aux sous-requêtes en tant que requêtes POST
487       elles-mêmes. Sans cette directive, toutes les sous-requêtes sont
488       traitées en tant que requêtes GET.</p>
489
490       </dd>
491
492       <dt><code>onerror</code></dt>
493       <dd><p>La valeur est un chemin-URL (codé-%) qui est affiché si une
494       tentative précédente d'inclure un fichier ou un attribut virtuel a
495       échoué. Pour produire son effet, cet attribut doit être spécifié
496       après le fichier ou les attributs virtuels concernés. Si la
497       tentative d'inclure le chemin onerror échoue, ou si onerror n'est
498       pas spécifié, c'est le message d'erreur par défaut qui sera
499       inclus.</p>
500
501       <div class="example"><p><code>
502         # Exemple simple<br />
503         &lt;!--#include virtual="/not-exist.html" onerror="/error.html" --&gt;
504       </code></p></div>
505
506       <div class="example"><p><code>
507         # Chemins onerror dédiés<br />
508         &lt;!--#include virtual="/path-a.html" onerror="/error-a.html" virtual="/path-b.html" onerror="/error-b.html" --&gt;
509       </code></p></div>
510
511       </dd>
512       </dl>
513      
514
515     <h3><a name="element.printenv" id="element.printenv">L'élément printenv</a></h3>
516       <p>Cette commande affiche la liste en mode texte de toutes les variables et de
517       leurs valeurs. Les caractères spéciaux sont encodés <code>entity</code> avant
518       d'être affichés (se reporter à l'élément <code><a href="#element.echo">echo</a></code> pour plus de détails). Cette
519       commande ne comporte pas d'attributs.</p>
520
521       <div class="example"><h3>Exemple</h3><p><code>
522         &lt;pre&gt;
523           &lt;!--#printenv --&gt;
524         &lt;/pre&gt;
525       </code></p></div>
526      
527
528     <h3><a name="element.set" id="element.set">L'élément set</a></h3>
529       <p>Cette commande permet de définir la valeur d'une variable. Les
530       attributs sont :</p>
531
532       <dl>
533       <dt><code>var</code></dt>
534       <dd>Le nom de la variable à définir.</dd>
535
536       <dt><code>value</code></dt>
537       <dd>La valeur à affecter à la variable.</dd>
538       <dt><code>decoding</code></dt>
539       <dd><p>Spécifie si Apache doit effectuer un décodage dans la
540       variable avant son traitement ultérieur. La valeur par défaut est
541       <code>none</code>, et dans ce cas, aucun décodage n'est effectué.
542       Si la valeur est <code>url</code>, <code>urlencoded</code>,
543       <code>base64</code> ou
544       <code>entity</code>, c'est un décodage de type URL,
545       application/x-www-form-urlencoded, base64 ou
546       entité HTML qui sera respectivement effectué. Il est possible
547       d'effectuer plusieurs décodages en
548       spécifiant plusieurs valeurs séparées par des virgules. Les
549       spécifications de décodages restent valables jusqu'au prochain
550       attribut de décodage, ou la fin de l'élément. Pour être pris en
551       compte, l'attribut de <code>décodage</code>
552       doit <em>précéder</em> l'attribut <code>var</code> correspondant.</p>
553       </dd>
554
555       <dt><code>encoding</code></dt>
556       <dd><p>Spécifie la manière dont Apache va encoder les caractères
557       spéciaux que la variable contient avant leur affichage. S'il est
558       défini à <code>none</code>, aucun encodage ne sera effectué. Si la
559       valeur est <code>url</code>, <code>urlencoding</code>,
560       <code>base64</code> ou
561       <code>entity</code>, c'est un encodage de type URL,
562       application/x-www-form-urlencoded, base64 ou
563       entité HTML qui sera respectivement effectué. Il est possible de
564       spécifier plusieurs types d'encodage en les séparant par des
565       virgules. La spécification du type d'encodage fera effet
566       jusqu'à la définition d'un nouvel attribut encoding
567       ou la fin de l'élément. Pour produire son effet, l'attribut <code>encoding</code> doit
568       précéder l'attribut <code>var</code> concerné. Les encodages sont
569       effectués après les opérations de décodage.</p>
570       </dd>
571
572       </dl>
573
574       <div class="example"><h3>Exemple</h3><p><code>
575         &lt;!--#set var="category" value="help" --&gt;
576       </code></p></div>
577      
578 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
579 <div class="section">
580 <h2><a name="includevars" id="includevars">Variables include</a></h2>
581     
582
583     <p>À l'instar des variables de l'environnement CGI standard, ces
584     variables sont mises à la disposition de la commande
585     <code>echo</code>, des opérateurs conditionnels <code>if</code> et
586     <code>elif</code>, et de tout programme invoqué par le document.</p>
587
588     <dl>
589       <dt><code>DATE_GMT</code></dt>
590       <dd>La date GMT (Greenwich Mean Time) courante.</dd>
591
592       <dt><code>DATE_LOCAL</code></dt>
593       <dd>La date locale courante.</dd>
594
595       <dt><code>DOCUMENT_ARGS</code></dt>
596       <dd>Cette variable contient la chaîne de paramètres de la requête du
597       document SSI actif, ou la chaîne vide si aucune chaîne de paramètres de
598       requête n'est incluse. Pour les sous-requêtes invoquées par la directive
599       SSI <code>include</code>, <code>QUERY_STRING</code> contiendra la chaîne
600       de paramètres de la sous-requête et <code>DOCUMENT_ARGS</code> la chaîne
601       de paramètres du document SSI (disponible à partir de la version 2.4.19 du
602       serveur HTTP Apache).</dd>
603
604       <dt><code>DOCUMENT_NAME</code></dt>
605       <dd>Le nom de base du fichier demandé par l'utilisateur (sans son
606       chemin).</dd>
607
608       <dt><code>DOCUMENT_URI</code></dt>
609       <dd>Le chemin URL (caractères % décodés) du document demandé par
610       l'utilisateur. Notez que dans le cas d'inclusions de fichiers
611       imbriquées, il ne s'agit <em>pas</em> de l'URL du document
612       courant. Notez également que si l'URL est modifiée en interne (par
613       exemple via une directive <code class="directive"><a href="../mod/mod_alias.html#alias">alias</a></code> ou <code class="directive"><a href="../mod/mod_dir.html#directoryindex">directoryindex</a></code>), c'est l'URL modifiée
614       que contiendra la variable.</dd>
615
616       <dt><code>LAST_MODIFIED</code></dt>
617       <dd>La date de dernière modification du document demandé par
618       l'utilisateur.</dd>
619
620       <dt><code>QUERY_STRING_UNESCAPED</code></dt>
621       <dd>Si une chaîne d'arguments est présente dans la requête pour le
622       document SSI actif, elle sera affectée à
623       cette variable, les caractères %-décodés, et éventuellement
624       <em>échappés</em> pour qu'ils ne soient pas interprétés par le
625       shell (les caractères spéciaux comme <code>&amp;</code>,etc...
626       sont précédés d'anti-slashes). Cette variable n'est pas définie si aucune
627       chaîne d'arguments n'est présente. Utilisez <code>DOCUMENT_ARGS</code> si
628       l'échappement des caractères du shell n'est pas souhaité.</dd>
629     </dl>
630 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
631 <div class="section">
632 <h2><a name="substitution" id="substitution">Substitution de variable</a></h2>
633
634     <p>Une substitution de variable à l'intérieur d'une chaîne entre
635     guillemets s'effectue dans la plupart des situations où cette
636     dernière peut raisonablement constituer un argument d'une directive
637     SSI. Sont concernées les directives <code>config</code>,
638     <code>exec</code>, <code>flastmod</code>, <code>fsize</code>,
639     <code>include</code>, <code>echo</code>, et <code>set</code>. Si la
640     directive <code class="directive"><a href="#ssilegacyexprparser">SSILegacyExprParser</a></code> est définie à
641     <code>on</code>, la substitution s'effectue aussi dans les arguments
642     des opérateurs conditionnels. Vous pouvez insérer
643     un signe dollar en tant que caractère littéral dans une chaîne en
644     utilisant un anti-slash :</p>
645
646     <div class="example"><p><code>
647       &lt;!--#set var="cur" value="\$test" --&gt;
648     </code></p></div>
649
650     <p>Si une référence de variable doit être substituée au beau milieu
651     d'une séquence de caractères qui pourrait être elle-même considérée
652     comme un identifiant valide, l'ambiguïté peut être levée en
653     entourant la référence d'accolades, à la manière du shell :</p>
654
655     <div class="example"><p><code>
656       &lt;!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" --&gt;
657     </code></p></div>
658
659     <p>Dans cet exemple, la variable <code>Zed</code> se verra affecter
660     la valeur "<code>X_Y</code>" si <code>REMOTE_HOST</code> et
661     <code>REQUEST_METHOD</code> contiennent respectivement
662     "<code>X</code>" et "<code>Y</code>".</p>
663
664 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
665 <div class="section">
666 <h2><a name="flowctrl" id="flowctrl">Eléments de contrôle d'inclusion conditionnelle</a></h2>
667     
668
669     <p>Les éléments de base du contrôle d'inclusion conditionnelle sont
670     :</p>
671
672     <div class="example"><p><code>
673       &lt;!--#if expr="<var>test_condition</var>" --&gt;<br />
674       &lt;!--#elif expr="<var>test_condition</var>" --&gt;<br />
675       &lt;!--#else --&gt;<br />
676       &lt;!--#endif --&gt;
677     </code></p></div>
678
679     <p>L'élément <code>if</code> fonctionne de la même manière que
680     la directive if d'un langage de programmation. La condition est
681     évaluée et si le résultat est vrai, le texte qui suit jusqu'au
682     prochain élément <code>elif</code>, <code>else</code> ou
683     <code>endif</code> sera inclus dans le flux de sortie.</p>
684
685     <p>Les éléments <code>elif</code> ou <code>else</code> permettent
686     d'insérer du texte dans le flux de sortie si
687     <var>test_condition</var> s'est révélé faux. Ces éléments sont
688     optionnels.</p>
689
690     <p>L'élément <code>endif</code> termine le bloc de traitement
691     conditionnel <code>if</code> et est obligatoire.</p>
692
693     <p><var>test_condition</var> est une expression booléenne qui
694     emprunte la syntaxe <a href="../expr.html">ap_expr</a>. La directive
695     <code class="directive"><a href="#ssilegacyexprparser">SSILegacyExprParser</a></code>
696     permet de modifier cette syntaxe pour la rendre compatible avec
697     Apache HTTPD 2.2.x.</p>
698
699     <p>Le jeu de variables SSI avec l'élément <code>var</code> sont
700     exportées vers l'environnement de la requête et sont accessibles via
701     la fonction <code>reqenv</code>. Pour faire simple, le nom de
702     fonction <code>v</code> est aussi disponible dans le module
703     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>.</p>
704
705     <p>Dans l'exemple suivant, "depuis le réseau local"  sera affiché si
706     l'adresse IP du client appartient au sous-réseau 10.0.0.0/8.</p>
707
708     <div class="example"><p><code>
709       &lt;!--#if expr='-R "10.0.0.0/8"' --&gt;<br />
710       <span class="indent">
711         depuis le réseau local<br />
712       </span>
713       &lt;!--#else --&gt;<br />
714       <span class="indent">
715         depuis ailleurs<br />
716       </span>
717       &lt;!--#endif --&gt;
718     </code></p></div>
719
720     <p>Dans l'exemple suivant, "foo vaut bar" sera affiché si la variable
721     <code>foo</code> contient la valeur "bar".</p>
722
723     <div class="example"><p><code>
724       &lt;!--#if expr='v("foo") = "bar"' --&gt;<br />
725       <span class="indent">
726         foo vaut bar<br />
727       </span>
728       &lt;!--#endif --&gt;
729     </code></p></div>
730
731     <div class="note"><h3>Documentation de référence</h3>
732     <p>Voir aussi <a href="../expr.html">Les expressions dans le serveur
733     HTTP Apache</a> pour une référence complète et des exemples. Les
734     fonctions <em>restricted</em> ne sont pas disponibles dans
735     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>.</p>
736     </div>
737 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
738 <div class="section">
739 <h2><a name="legacyexpr" id="legacyexpr">Syntaxe des expressions héritée</a></h2>
740     
741
742     <p>Cette section décrit la syntaxe de l'élément <code>#if
743     expr</code> dans le cas où la directive <code class="directive"><a href="#ssilegacyexprparser">SSILegacyExprParser</a></code> est définie à
744     <code>on</code>.</p>
745
746     <dl>
747       <dt><code><var>chaîne</var></code></dt>
748       <dd>vrai si <var>chaîne</var> n'est pas vide</dd>
749
750       <dt><code><var>-A string</var></code></dt>
751       <dd><p>vrai si l'URL que contient la chaîne est accessible du
752       point de vue de la configuration, faux sinon. Il
753       s'avère utile lorsqu'un lien vers une URL doit être caché aux
754       utilisateurs qui ne sont pas autorisés à voir cette URL. Notez que
755       le test porte sur l'autorisation d'accès à l'URL, et non sur son
756       existence.</p>
757
758       <div class="example"><h3>Exemple</h3><p><code>
759         &lt;!--#if expr="-A /prive" --&gt;<br />
760         <span class="indent">
761           Cliquez &lt;a href="/prive"&gt;ici&lt;/a&gt; pour accéder aux
762           informations privées.<br />
763         </span>
764         &lt;!--#endif --&gt;
765       </code></p></div>
766       </dd>
767
768       <dt><code><var>chaîne1</var> = <var>chaîne2</var><br />
769       <var>chaîne1</var> == <var>chaîne2</var><br />
770       <var>chaîne1</var> != <var>chaîne2</var></code></dt>
771
772       <dd><p>Compare <var>chaîne1</var> à <var>chaîne2</var>. Si
773       <var>chaîne2</var> est de la forme
774       <code>/<var>chaîne2</var>/</code>, elle est traitée comme une
775       expression rationnelle. Les expressions rationnelles sont
776       implémentées par le moteur <a href="http://www.pcre.org">PCRE</a>
777       et possèdent la même syntaxe que celles de <a href="http://www.perl.com">perl 5</a>. Notez que <code>==</code>
778       n'est qu'un alias pour <code>=</code> et se comporte exactement de
779       la même manière que ce dernier.</p>
780
781       <p>Si vous faites une comparaison directe (<code>=</code> ou
782       <code>==</code>), vous pouvez extraire des parties de l'expression
783       rationnelle. Les parties extraites sont stockées dans les
784       variables spéciales <code>$1</code> .. <code>$9</code>. L'ensemble
785       de la chaîne correspondant à l'expression rationnelle est stocké
786       dans la variable spéciale <code>$0</code>.</p>
787
788       <div class="example"><h3>Exemple</h3><p><code>
789         &lt;!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" --&gt;<br />
790         <span class="indent">
791           &lt;!--#set var="session" value="$1" --&gt;<br />
792         </span>
793         &lt;!--#endif --&gt;
794       </code></p></div>
795       </dd>
796
797       <dt><code><var>chaîne1</var> &lt; <var>chaîne2</var><br />
798        <var>chaîne1</var> &lt;= <var>chaîne2</var><br />
799        <var>chaîne1</var> &gt; <var>chaîne2</var><br />
800        <var>chaîne1</var> &gt;= <var>chaîne2</var></code></dt>
801
802       <dd>Compare <var>chaîne1</var> à <var>chaîne2</var>. Notez que les
803       chaînes sont comparées de manière <em>littérale</em> (en utilisant
804       <code>strcmp(3)</code>). Ainsi, la chaîne "100" est inférieure à
805       "20".</dd>
806
807       <dt><code>( <var>test_condition</var> )</code></dt>
808       <dd>vrai si <var>test_condition</var> est vrai</dd>
809
810       <dt><code>! <var>test_condition</var></code></dt>
811       <dd>vrai si <var>test_condition</var> est faux</dd>
812
813       <dt><code><var>test_condition1</var> &amp;&amp;
814         <var>test_condition2</var></code></dt>
815       <dd>vrai si <var>test_condition1</var> et
816       <var>test_condition2</var> sont tous les deux vrais</dd>
817
818       <dt><code><var>test_condition1</var> ||
819         <var>test_condition2</var></code></dt>
820       <dd>vrai si au moins un des tests <var>test_condition1</var> ou
821       <var>test_condition2</var> est vrai</dd>
822     </dl>
823
824     <p>"<code>=</code>" et "<code>!=</code>" ont une priorité supérieure
825     à "<code>&amp;&amp;</code>" et "<code>||</code>". "<code>!</code>" a
826     la priorité la plus haute. Ainsi, les deux directives suivantes sont
827     équivalentes :</p>
828
829     <div class="example"><p><code>
830       &lt;!--#if expr="$a = test1 &amp;&amp; $b = test2" --&gt;<br />
831       &lt;!--#if expr="($a = test1) &amp;&amp; ($b = test2)" --&gt;
832     </code></p></div>
833
834     <p>Les opérateurs booléens <code>&amp;&amp;</code> et
835     <code>||</code> ont la même priorité. Ainsi, si vous voulez
836     augmenter la priorité d'un de ces opérateurs, vous devez utiliser
837     des parenthèses.</p>
838
839     <p>Tout ce qui n'est pas reconnu comme variable ou opérateur est
840     traité comme une chaîne. Les chaînes peuvent aussi être entourées
841     d'apostrophes : <code>'chaîne'</code>. Les chaînes sans apostrophe
842     ne peuvent pas contenir d'espaces (espaces ou tabulations) car
843     ceux-ci servent à séparer certains éléments comme les variables. Si
844     plusieurs chaînes se trouvent dans une ligne, elles sont concaténées
845     en utilisant des espaces. Ainsi,</p>
846
847     <div class="example"><p><code><var>chaîne1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>chaîne2</var></code> devient <code><var>chaîne1</var>&nbsp;<var>chaîne2</var></code><br />
848       <br />
849       et<br />
850       <br />
851       <code>'<var>chaîne1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>chaîne2</var>'</code> devient <code><var>chaîne1</var>&nbsp;&nbsp;&nbsp;&nbsp;<var>chaîne2</var></code>.</p></div>
852
853     <div class="note"><h3>Optimisation des expressions booléennes</h3>
854       <p>Si les expressions atteignent une complexité suffisante pour
855       ralentir les traitements de manière significative, vous pouvez
856       essayer de les optimiser en fonction des règles d'évaluation :</p>
857       <ul>
858       <li>Les expressions sont évaluées de la gauche vers la droite</li>
859       <li>Les opérateurs booléens binaires (<code>&amp;&amp;</code> et
860       <code>||</code>) font l'objet d'une évaluation abrégée chaque fois
861       que cela est possible. En d'autres termes, et selon la règle
862       ci-dessus, <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> évalue tout d'abord la
863       partie gauche de l'expression. Si le résultat de l'évaluation de
864       cette partie gauche suffit à déterminer le résultat final,
865       l'évaluation s'arrête ici. Dans le cas contraire, la partie droite
866       est évaluée, et le résultat final tient compte des résultats des
867       évaluations des parties gauche et droite.</li>
868       <li>L'évaluation abrégée est désactivée tant qu'il reste des
869       expressions régulières à traiter. Ces dernières doivent être
870       évaluées afin de définir les variables correspondant aux
871       références arrières (<code>$1</code> .. <code>$9</code>).</li>
872       </ul>
873       <p>Si vous voulez déterminer la manière dont une expression est
874       traitée, vous pouvez recompiler <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> en
875       utilisant l'option de compilation <code>-DDEBUG_INCLUDE</code>.
876       Ceci a pour effet d'insérer, pour chaque expression interprétée,
877       des informations étiquetées, l'arbre d'interprétation et la
878       manière dont elle est évaluée au sein du flux de sortie envoyé au
879       client.</p>
880     </div>
881
882     <div class="note"><h3>Slashes d'échappement dans les expressions
883     rationnelles</h3>
884      <p>Tous les caractères slashes qui ne sont pas des séparateurs dans
885      votre expression rationnelle doivent être échappés, et ceci sans
886      tenir compte de leur signification du point de vue du moteur
887      d'expressions rationnelles.</p>
888     </div>
889
890     <div class="note"><h3>Documentation de référence</h3>
891     <p>Voir le document <a href="../expr.html">Les expressions dans le
892     serveur HTTP Apache</a>, pour une référence complète et des exemples.</p>
893     </div>
894
895
896 </div>
897 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
898 <div class="directive-section"><h2><a name="ssiendtag" id="ssiendtag">Directive</a> <a name="SSIEndTag" id="SSIEndTag">SSIEndTag</a></h2>
899 <table class="directive">
900 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Chaîne qui termine l'élément include</td></tr>
901 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSIEndTag <var>tag</var></code></td></tr>
902 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSIEndTag "--&gt;"</code></td></tr>
903 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
904 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
905 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
906 </table>
907     <p>Cette directive permet de modifier la chaîne que
908     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> interprète comme la fin d'un élément
909     include.</p>
910
911     <pre class="prettyprint lang-config">SSIEndTag "%&gt;"</pre>
912
913
914
915 <h3>Voir aussi</h3>
916 <ul>
917 <li><code class="directive"><a href="#ssistarttag">SSIStartTag</a></code></li>
918 </ul>
919 </div>
920 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
921 <div class="directive-section"><h2><a name="ssierrormsg" id="ssierrormsg">Directive</a> <a name="SSIErrorMsg" id="SSIErrorMsg">SSIErrorMsg</a></h2>
922 <table class="directive">
923 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Message d'erreur affiché lorsqu'une erreur SSI
924 survient</td></tr>
925 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSIErrorMsg <var>message</var></code></td></tr>
926 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSIErrorMsg "[an error occurred while processing this
927 directive]"</code></td></tr>
928 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
929 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
930 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
931 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
932 </table>
933     <p>La directive <code class="directive">SSIErrorMsg</code> permet de
934     modifier le message d'erreur affiché lorsqu'une erreur SSI survient.
935     Pour les serveurs en production, il est recommandé de modifier le
936     message d'erreur par défaut en <code>"&lt;!-- Error
937     --&gt;"</code>, de façon à ce que le message ne soit pas
938     présenté à l'utilisateur.</p>
939
940     <p>Cette directive a le même effet que l'élément
941     <code>&lt;!--#config errmsg=<var>message</var> --&gt;</code>.</p>
942
943     <pre class="prettyprint lang-config">SSIErrorMsg "&lt;!-- Error --&gt;"</pre>
944
945
946 </div>
947 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
948 <div class="directive-section"><h2><a name="ssietag" id="ssietag">Directive</a> <a name="SSIETag" id="SSIETag">SSIETag</a></h2>
949 <table class="directive">
950 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit si des en-têtes ETags sont générés par le serveur.</td></tr>
951 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSIETag on|off</code></td></tr>
952 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSIETag off</code></td></tr>
953 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
954 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Limit</td></tr>
955 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
956 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
957 </table>
958       <p>Dans le cas général, un fichier filtré par
959       <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> peut contenir des éléments soit
960       générés dynamiquement, soit éventuellement modifiés indépendemment
961       du fichier original. En conséquence, il est demandé par défaut au
962       serveur de ne pas générer d'en-tête <code>ETag</code> à la réponse
963       en ajoutant <code>no-etag</code> aux informations de requête.</p>
964
965       <p>Ce comportement peut être modifié via la directive
966       <code class="directive">SSIETag</code> qui permet au serveur de générer un
967       en-tête <code>ETag</code>. On peut aussi l'utiliser pour la mise
968       en cache de la sortie. Notez qu'un serveur d'arrière-plan ou un
969       générateur de contenu dynamique peut lui-même générer un en-tête
970       <code>ETag</code>, en ignorant l'information <code>no-etag</code>,
971       cet en-tête <code>ETag</code> étant transmis par
972       <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> sans tenir compte de la définition de
973       la présente directive. La directive <code class="directive">SSIETag</code>
974       peut prendre une des valeurs suivantes :</p>
975
976       <dl>
977
978         <dt><code>off</code></dt>
979         <dd><code>no-etag</code> sera ajouté aux informations de
980         requête, et il sera demandé au serveur de ne pas générer
981         d'en-tête <code>ETag</code>. Lorsqu'un serveur ignore la valeur
982         de <code>no-etag</code> et génère tout de même un en-tête
983         <code>ETag</code>, ce dernier sera respecté.</dd>
984
985         <dt><code>on</code></dt>
986         <dd>Les en-têtes <code>ETag</code> existants seront respectés,
987         et ceux générés par le serveur seront ajoutés à la réponse.</dd>
988
989       </dl>
990
991
992 </div>
993 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
994 <div class="directive-section"><h2><a name="ssilastmodified" id="ssilastmodified">Directive</a> <a name="SSILastModified" id="SSILastModified">SSILastModified</a></h2>
995 <table class="directive">
996 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit si des en-têtes <code>Last-Modified</code> sont
997 générés par le serveur.</td></tr>
998 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSILastModified on|off</code></td></tr>
999 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSILastModified off</code></td></tr>
1000 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
1001 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Limit</td></tr>
1002 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
1003 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
1004 </table>
1005       <p>Dans le cas général, un fichier filtré par
1006       <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> peut contenir des éléments soit
1007       générés dynamiquement, soit éventuellement modifiés indépendemment
1008       du fichier original. En conséquence, l'en-tête
1009       <code>Last-Modified</code> est supprimé par défaut de la réponse.</p>
1010
1011       <p>La directive <code class="directive">SSILastModified</code> permet de
1012       modifier ce comportement en faisant en sorte que l'en-tête
1013       <code>Last-Modified</code> soit respecté s'il est déjà présent, ou
1014       défini dans le cas contraire. On peut aussi l'utiliser pour la mise
1015       en cache de la sortie. La directive
1016       <code class="directive">SSILastModified</code> peut prendre une des
1017       valeurs suivantes :</p>
1018
1019       <dl>
1020
1021         <dt><code>off</code></dt>
1022         <dd>L'en-tête <code>Last-Modified</code> sera supprimé des
1023         réponses, à moins que la directive <code class="directive"><a href="#xbithack">XBitHack</a></code> ne soit définie à
1024         <code>full</code> comme décrit plus loin.</dd>
1025
1026         <dt><code>on</code></dt>
1027         <dd>L'en-tête <code>Last-Modified</code> sera respecté s'il est
1028         déjà présent, et ajouté à la réponse si cette dernière est un
1029         fichier et si l'en-tête est manquant. La directive <code class="directive"><a href="#ssilastmodified">SSILastModified</a></code> l'emporte sur
1030         la directive <code class="directive"><a href="#xbithack">XBitHack</a></code>.</dd>
1031
1032       </dl>
1033
1034
1035 </div>
1036 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
1037 <div class="directive-section"><h2><a name="ssilegacyexprparser" id="ssilegacyexprparser">Directive</a> <a name="SSILegacyExprParser" id="SSILegacyExprParser">SSILegacyExprParser</a></h2>
1038 <table class="directive">
1039 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active le mode de compatibilité pour les expressions
1040 conditionnelles.</td></tr>
1041 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSILegacyExprParser on|off</code></td></tr>
1042 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSILegacyExprParser off</code></td></tr>
1043 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
1044 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Limit</td></tr>
1045 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
1046 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
1047 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.3.13.</td></tr>
1048 </table>
1049     <p>Depuis la version 2.3.13, <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> a adopté
1050     la nouvelle syntaxe <a href="../expr.html">ap_expr</a> pour ses
1051     expressions conditionnelles dans les éléments de contrôle de flux
1052     <code>#if</code>. Cette directive permet de réactiver l'<a href="#legacyexpr">ancienne syntaxe</a> qui est compatible avec les
1053     versions 2.2.x et antérieures d'Apache HTTPD.
1054     </p>
1055
1056 </div>
1057 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
1058 <div class="directive-section"><h2><a name="ssistarttag" id="ssistarttag">Directive</a> <a name="SSIStartTag" id="SSIStartTag">SSIStartTag</a></h2>
1059 <table class="directive">
1060 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Chaîne qui marque le début d'un élément
1061 include</td></tr>
1062 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSIStartTag <var>tag</var></code></td></tr>
1063 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSIStartTag "&lt;!--#"</code></td></tr>
1064 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
1065 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
1066 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
1067 </table>
1068     <p>Cette directive permet de modifier la chaîne que
1069     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> interprète comme le début d'un élément
1070     include.</p>
1071
1072     <p>Cette option peut vous être utile si vous avez deux serveurs qui
1073     interprètent un fichier avec des commandes différentes (et
1074     éventuellement à des moments différents).</p>
1075
1076     <pre class="prettyprint lang-config">SSIStartTag "&lt;%"
1077 SSIEndTag   "%&gt;"</pre>
1078
1079
1080     <p>Avec l'exemple ci-dessus, qui définit aussi une directive
1081     <code class="directive"><a href="#ssiendtag">SSIEndTag</a></code>, vous pourrez
1082     inscrire des directives SSI comme dans l'exemple suivant :</p>
1083
1084     <div class="example"><h3>Directives SSI avec marques de début et de fin
1085     personnalisées</h3><p><code>
1086       &lt;%printenv %&gt;
1087     </code></p></div>
1088
1089 <h3>Voir aussi</h3>
1090 <ul>
1091 <li><code class="directive"><a href="#ssiendtag">SSIEndTag</a></code></li>
1092 </ul>
1093 </div>
1094 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
1095 <div class="directive-section"><h2><a name="ssitimeformat" id="ssitimeformat">Directive</a> <a name="SSITimeFormat" id="SSITimeFormat">SSITimeFormat</a></h2>
1096 <table class="directive">
1097 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configuration du format d'affichage des dates</td></tr>
1098 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSITimeFormat <var>chaîne de formatage</var></code></td></tr>
1099 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"</code></td></tr>
1100 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
1101 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
1102 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
1103 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
1104 </table>
1105 <p>Cette directive permet de modifier le format d'affichage des
1106 variables d'environnement <code>DATE</code>. La <var>chaîne de
1107 formatage</var> est identique à celle de la fonction
1108 <code>strftime(3)</code> de la bibliothèque C standard.</p>
1109
1110     <p>Cette directive a le même effet que l'élément
1111     <code>&lt;!--#config timefmt=<var>chaîne de formatage</var>
1112     --&gt;</code>.</p>
1113
1114     <pre class="prettyprint lang-config">SSITimeFormat "%R, %B %d, %Y"</pre>
1115
1116
1117     <p>Avec l'exemple ci-dessus, les dates seront affichées dans le
1118     style "22:26, June 14, 2002".</p>
1119
1120 </div>
1121 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
1122 <div class="directive-section"><h2><a name="ssiundefinedecho" id="ssiundefinedecho">Directive</a> <a name="SSIUndefinedEcho" id="SSIUndefinedEcho">SSIUndefinedEcho</a></h2>
1123 <table class="directive">
1124 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Chaîne à afficher lorsqu'on tente d'extraire le contenu
1125 d'une variable non définie</td></tr>
1126 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>SSIUndefinedEcho <var>chaîne</var></code></td></tr>
1127 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>SSIUndefinedEcho "(none)"</code></td></tr>
1128 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
1129 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>All</td></tr>
1130 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
1131 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
1132 </table>
1133     <p>Cette directive permet de modifier la chaîne affichée par
1134     <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> lorsqu'on tente d'extraire le contenu
1135     d'une variable non définie.</p>
1136
1137     <pre class="prettyprint lang-config">SSIUndefinedEcho "&lt;!-- nondef --&gt;"</pre>
1138
1139
1140 </div>
1141 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
1142 <div class="directive-section"><h2><a name="xbithack" id="xbithack">Directive</a> <a name="XBitHack" id="XBitHack">XBitHack</a></h2>
1143 <table class="directive">
1144 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Interprète les directives SSI dans les fichiers dont le bit
1145 d'exécution est positionné</td></tr>
1146 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>XBitHack on|off|full</code></td></tr>
1147 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>XBitHack off</code></td></tr>
1148 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
1149 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Options</td></tr>
1150 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
1151 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_include</td></tr>
1152 </table>
1153     <p>La directive <code class="directive">XBitHack</code> permet de contrôler
1154     l'interprétation des documents html standards. Elle n'affecte que
1155     les fichiers dont le <a class="glossarylink" href="../glossary.html#type mime" title="voir glossaire">type MIME</a> est
1156     <code>text/html</code>. <code class="directive">XBitHack</code> peut prendre
1157     les valeurs suivantes :</p>
1158
1159     <dl>
1160       <dt><code>off</code></dt>
1161       <dd>Aucun traitement particulier pour les fichiers
1162       exécutables.</dd>
1163
1164       <dt><code>on</code></dt>
1165       <dd>Tout fichier <code>text/html</code> dont le bit d'exécution
1166       est positionné pour le propriétaire sera traité en tant que
1167       document html interprété par le serveur.</dd>
1168
1169       <dt><code>full</code></dt>
1170       <dd>Identique à <code>on</code>, avec test du bit d'exécution pour
1171       le groupe. Si ce dernier est positionné, la date de <code>dernière
1172       modification</code> du fichier renvoyé est définie à la date de
1173       dernière modification du fichier. Dans le cas contraire, aucune
1174       date de dernière modification n'est renvoyée. Le positionnement de
1175       ce bit permet aux clients et aux mandataires de gérer la mise en
1176       cache du résultat de la requête.
1177
1178       <div class="note"><h3>Note</h3>
1179       <p>Il est recommandé de n'utiliser l'option full que dans le cas
1180       où vous êtes certain que le bit d'exécution du groupe est non
1181       positionné pour les scripts SSI qui pourraient effectuer l'<code>#include</code> d'un programme CGI ou bien produire des sorties
1182       différentes à chaque accès (ou seraient susceptibles d'être
1183       modifiées au cours des requêtes ultérieures).</p>
1184
1185       <p>Lorsqu'elle est définie à <code>on</code>, la directive
1186       <code class="directive"><a href="#ssilastmodified">SSILastModified</a></code>
1187       l'emporte sur la directive <code class="directive"><a href="#xbithack">XBitHack</a></code>.</p>
1188       </div>
1189
1190       </dd>
1191     </dl>
1192
1193
1194 </div>
1195 </div>
1196 <div class="bottomlang">
1197 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_include.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
1198 <a href="../fr/mod/mod_include.html" title="Français">&nbsp;fr&nbsp;</a> |
1199 <a href="../ja/mod/mod_include.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
1200 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
1201 <script type="text/javascript"><!--//--><![CDATA[//><!--
1202 var comments_shortname = 'httpd';
1203 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_include.html';
1204 (function(w, d) {
1205     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
1206         d.write('<div id="comments_thread"><\/div>');
1207         var s = d.createElement('script');
1208         s.type = 'text/javascript';
1209         s.async = true;
1210         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
1211         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
1212     }
1213     else {
1214         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
1215     }
1216 })(window, document);
1217 //--><!]]></script></div><div id="footer">
1218 <p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
1219 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.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[//><!--
1220 if (typeof(prettyPrint) !== 'undefined') {
1221     prettyPrint();
1222 }
1223 //--><!]]></script>
1224 </body></html>