]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_remoteip.html.fr
xforms
[apache] / docs / manual / mod / mod_remoteip.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         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>mod_remoteip - Serveur Apache HTTP</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <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" />
12 <script src="../style/scripts/prettify.js" type="text/javascript">
13 </script>
14
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
16 <body>
17 <div id="page-header">
18 <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>
19 <p class="apache">Serveur Apache HTTP Version 2.5</p>
20 <img alt="" src="../images/feather.gif" /></div>
21 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
22 <div id="path">
23 <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>
24 <div id="page-content">
25 <div id="preamble"><h1>Module Apache mod_remoteip</h1>
26 <div class="toplang">
27 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_remoteip.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
28 <a href="../fr/mod/mod_remoteip.html" title="Français">&nbsp;fr&nbsp;</a></p>
29 </div>
30 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Remplace l'adresse IP et le nom d'hôte apparents du client
31 pour la requête par l'adresse IP présentée par un mandataire ou un
32 répartiteur de charge via les en-têtes de la requête.
33 </td></tr>
34 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
35 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>remoteip_module</td></tr>
36 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_remoteip.c</td></tr></table>
37 <h3>Sommaire</h3>
38
39     <p>Ce module permet de traiter l'hôte distant qui a initié la
40     requête en tant qu'hôte distant original du point de vue de httpd à
41     des fins d'autorisation et de connexion, même si cet hôte distant se
42     trouve derrière un répartiteur de charge, un serveur frontal, ou un
43     serveur mandataire.</p>
44
45     <p>Le module remplace les adresse IP et nom d'hôte apparents
46     distants (du client) pour la requête par l'adresse IP indiquée dans
47     l'en-tête de requête configuré via la directive
48     <code class="directive">RemoteIPHeader</code>.</p>
49
50     <p>Une fois remplacée comme indiqué, cette adresse IP apparente est
51     utilisée pour les fonctionnalités <code class="directive"><a href="../mod/mod_authz_host.html#require host">&lt;Require host&gt;</a></code> et <code class="directive"><a href="../mod/mod_authz_host.html#require ip">&lt;Require ip&gt;</a></code> de
52     <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> ; elle est aussi affichée par
53     <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>, et enregistrée via les directives
54     <code>%a</code> et <code>%h</code> du module
55     <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>. Elle permet aussi d'identifier la
56     machine en essayant de lui attribuer une identité inetd via le
57     module <code class="module"><a href="../mod/mod_ident.html">mod_ident</a></code> et en fonction de la configuration
58     de la directive <code class="directive"><a href="../mod/mod_ident.html#identitycheck">IdentityCheck</a></code>.</p>
59
60     <div class="warning">Il est essentiel de n'activer cette
61     fonctionnalité que pour les requêtes en provenance des serveurs
62     intermédiaires (mandataires, etc...) auxquels le serveur peut faire
63     confiance, car il est trivial pour le client distant d'usurper
64     l'identité d'un autre client.</div>
65 </div>
66 <div id="quickview"><h3 class="directives">Directives</h3>
67 <ul id="toc">
68 <li><img alt="" src="../images/down.gif" /> <a href="#remoteipheader">RemoteIPHeader</a></li>
69 <li><img alt="" src="../images/down.gif" /> <a href="#remoteipinternalproxy">RemoteIPInternalProxy</a></li>
70 <li><img alt="" src="../images/down.gif" /> <a href="#remoteipinternalproxylist">RemoteIPInternalProxyList</a></li>
71 <li><img alt="" src="../images/down.gif" /> <a href="#remoteipproxiesheader">RemoteIPProxiesHeader</a></li>
72 <li><img alt="" src="../images/down.gif" /> <a href="#remoteiptrustedproxy">RemoteIPTrustedProxy</a></li>
73 <li><img alt="" src="../images/down.gif" /> <a href="#remoteiptrustedproxylist">RemoteIPTrustedProxyList</a></li>
74 </ul>
75 <h3>Sujets</h3>
76 <ul id="topics">
77 <li><img alt="" src="../images/down.gif" /> <a href="#processing">Traitement des adresses distantes</a></li>
78 </ul><h3>Voir aussi</h3>
79 <ul class="seealso">
80 <li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>
81 <li><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></li>
82 <li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
83 <li><code class="module"><a href="../mod/mod_ident.html">mod_ident</a></code></li>
84 </ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
85 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
86 <div class="section">
87 <h2><a name="processing" id="processing">Traitement des adresses distantes</a></h2>
88
89     <p>Apache identifie le client par la valeur remote_ip de la
90     connexion, et de cette valeur découlent les valeurs remote_host et
91     remote_logname de la connexion. Ces champs jouent un rôle
92     dans l'authentification, l'autorisation et la connexion, ainsi que
93     dans d'autres traitements effectués par d'autres modules
94     chargeables.</p>
95
96     <p>mod_remoteip remplace la véritable remote_ip par la remote_ip
97     indiquée par exemple par un mandataire chaque fois que le serveur
98     effectue une évaluation du client, et réinitialise les valeurs de
99     remote_host et remote_logname afin de déclencher une nouvelle
100     requête dns ou ident sur l'adresse IP distante.</p>
101
102     <p>Lorsque la valeur de l'en-tête comporte plusieurs adresses IP
103     distantes séparées par des virgules, celles-ci sont traitées de la
104     droite vers la gauche. Le traitement s'arrête lorsque l'adresse IP
105     distante courante n'est pas digne de confiance pour présenter
106     l'adresse IP précédente. Le champ d'en-tête est alors mis à jour de
107     façon à ne contenir que cette liste d'adresses non confirmées, ou
108     bien, si toutes les adresses IP sont dignes de confiance, cet
109     en-tête est tout bonnement supprimé de la requête.</p>
110
111     <p>Lors du remplacement de l'adresse IP distante, le module stocke
112     la liste des hôtes intermédiaires dans un mémo
113     remoteip-proxy-ip-list, que l'on peut faire enregistrer par
114     <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code> en utilisant le symbole de format
115     <code>%{remoteip-proxy-ip-list}n</code>. Si l'administrateur doit
116     stocker ceci dans un en-tête additionnel, la même valeur peut aussi
117     être enregistrée sous la forme d'un en-tête en utilisant la
118     directive <code class="directive">RemoteIPProxiesHeader</code>.</p>
119
120     <div class="note"><h3>Adresses IPv4 converties au format IPv6</h3>
121     Avec httpd, d'une manière générale, toute adresse IPv4 convertie au
122     format IPv6 est enregistrée sous sa forme IPv4.</div>
123
124     <div class="note"><h3>Adresses internes (privées)</h3>
125     Tous les blocs d'adresses internes 10/8, 172.16/12, 192.168/16,
126     169.254/16 and 127/8 (ainsi que les adresses IPv6 en dehors du bloc
127     public 2000::/3 block) ne sont évaluées par mod_remoteip que lorsque
128     des mandataires internes (intranet)
129     <code class="directive">RemoteIPInternalProxy</code> sont enregistrés.</div>
130
131 </div>
132 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
133 <div class="directive-section"><h2><a name="RemoteIPHeader" id="RemoteIPHeader">RemoteIPHeader</a> <a name="remoteipheader" id="remoteipheader">Directive</a></h2>
134 <table class="directive">
135 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit le champ d'en-tête qui contiendra les adresses IP
136 du client</td></tr>
137 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RemoteIPHeader <var>en-tête</var></code></td></tr>
138 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
139 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
140 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_remoteip</td></tr>
141 </table>
142     <p>La directive <code class="directive">RemoteIPHeader</code> indique à
143     <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code> de traiter la valeur de
144     l'<var>en-tête</var> spécifié comme l'adresse IP du client, ou comme
145     une liste d'adresses IP clients intermédiaires, en fonction de la
146     configuration des directives
147     <code class="directive">RemoteIPInternalProxy</code> et
148     <code class="directive">RemoteIPTrustedProxy</code>. Si ces deux dernières
149     directives ne sont pas utilisées, <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code>
150     traitera tout hôte présentant une valeur d'IP
151     <code class="directive">RemoteIPHeader</code> comme hôte de confiance.</p>
152
153     <div class="example"><h3>Exemple à usage interne (répartiteur de
154     charge)</h3><pre class="prettyprint lang-config">
155         RemoteIPHeader X-Client-IP
156         </pre>
157 </div>
158
159     <div class="example"><h3>Exemple dans le cas d'un mandataire</h3><pre class="prettyprint lang-config">
160         RemoteIPHeader X-Forwarded-For
161         </pre>
162 </div>
163
164 </div>
165 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
166 <div class="directive-section"><h2><a name="RemoteIPInternalProxy" id="RemoteIPInternalProxy">RemoteIPInternalProxy</a> <a name="remoteipinternalproxy" id="remoteipinternalproxy">Directive</a></h2>
167 <table class="directive">
168 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Déclare les adresses IP intranet clients comme dignes de
169 confiance pour présenter la valeur RemoteIPHeader</td></tr>
170 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RemoteIPInternalProxy
171 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</code></td></tr>
172 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
173 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
174 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_remoteip</td></tr>
175 </table>
176     <p>La directive <code class="directive">RemoteIPInternalProxy</code> permet
177     d'ajouter une ou plusieurs adresses (ou blocs d'adresses) auxquelles
178     on peut faire confiance pour présenter une valeur RemoteIPHeader
179     valide de l'adresse IP du client. A la différence de la directive
180     <code class="directive">RemoteIPTrustedProxy</code>, toute adresse IP
181     présentée dans cet en-tête, y comprises les adresses intranet
182     privées, sont considérées comme dignes de confiance lorsqu'elles
183     sont indiquées par ces mandataires.</p>
184
185     <div class="example"><h3>Exemple à usage interne (répartiteur de
186     charge)</h3><pre class="prettyprint lang-config">
187 RemoteIPHeader X-Client-IP
188 RemoteIPInternalProxy 10.0.2.0/24
189 RemoteIPInternalProxy gateway.localdomain
190         </pre>
191 </div>
192
193 </div>
194 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
195 <div class="directive-section"><h2><a name="RemoteIPInternalProxyList" id="RemoteIPInternalProxyList">RemoteIPInternalProxyList</a> <a name="remoteipinternalproxylist" id="remoteipinternalproxylist">Directive</a></h2>
196 <table class="directive">
197 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Déclare les adresses IP intranet clients comme dignes de
198 confiance pour présenter la valeur RemoteIPHeader</td></tr>
199 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RemoteIPInternalProxyList <var>nom-fichier</var></code></td></tr>
200 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
201 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
202 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_remoteip</td></tr>
203 </table>
204     <p>La directive <code class="directive">RemoteIPInternalProxyList</code>
205     permet de spécifier un fichier parcouru au démarrage du serveur pour
206     construire une liste d'adresses (ou blocs d'adresses), auxquelles
207     on peut faire confiance pour présenter une valeur RemoteIPHeader
208     valide de l'adresse IP du client.</p>
209
210     <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
211     sinon, toutes les lignes séparées par un caractère <code>nouvelle
212     ligne</code> ou
213     tous les éléments d'une ligne séparés par un espace sont traités de
214     la même façon qu'avec la directive
215     <code class="directive">RemoteIPInternalProxy</code>.</p>
216
217     <div class="example"><h3>Exemple à usage interne (répartiteur de
218     charge)</h3><pre class="prettyprint lang-config">
219 RemoteIPHeader X-Client-IP
220 RemoteIPInternalProxyList conf/trusted-proxies.lst
221         </pre>
222 </div>
223
224     <div class="example"><h3>contenu de conf/mandataires-de-confiance.lst</h3><div class="example"><pre>
225          # Nos mandataires internes de confiance
226          10.0.2.0/24         # Tout le monde dans le groupe de test
227          passerelle.domaine-local # Le frontal répartiteur de charge
228          </pre></div></div>
229
230 </div>
231 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
232 <div class="directive-section"><h2><a name="RemoteIPProxiesHeader" id="RemoteIPProxiesHeader">RemoteIPProxiesHeader</a> <a name="remoteipproxiesheader" id="remoteipproxiesheader">Directive</a></h2>
233 <table class="directive">
234 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Déclare le champ d'en-tête qui contiendra toutes les
235 adresses IP intermédiaires</td></tr>
236 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RemoteIPProxiesHeader <var>Nom_en-tête</var></code></td></tr>
237 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
238 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
239 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_remoteip</td></tr>
240 </table>
241     <p>La directive <code class="directive">RemoteIPProxiesHeader</code> permet
242     de spécifier l'en-tête dans lequel <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code> va
243     collecter une liste de toutes les adresses IP clients intermédiaires
244     auxquelles on pourra faire confiance pour résoudre la véritable
245     adresse IP distante. Notez que les adresses intermédiaires
246     <code class="directive">RemoteIPTrustedProxy</code> sont enregistrées dans
247     cet en-tête, alors que toute adresse intermédiaire
248     <code class="directive">RemoteIPInternalProxy</code> est omise.</p>
249
250     <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">
251 RemoteIPHeader X-Forwarded-For
252 RemoteIPProxiesHeader X-Forwarded-By
253     </pre>
254 </div>
255
256 </div>
257 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
258 <div class="directive-section"><h2><a name="RemoteIPTrustedProxy" id="RemoteIPTrustedProxy">RemoteIPTrustedProxy</a> <a name="remoteiptrustedproxy" id="remoteiptrustedproxy">Directive</a></h2>
259 <table class="directive">
260 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Déclare les adresses IP intranet clients comme dignes de
261 confiance pour présenter la valeur RemoteIPHeader</td></tr>
262 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RemoteIPTrustedProxy
263 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</code></td></tr>
264 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
265 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
266 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_remoteip</td></tr>
267 </table>
268     <p>La directive <code class="directive">RemoteIPTrustedProxy</code> permet
269     d'ajouter une ou plusieurs adresses, ou blocs d'adresses, auxquelles
270     on peut faire confiance pour présenter une valeur RemoteIPHeader
271     valide de l'adresse IP du client. A la différence de la directive
272     <code class="directive">RemoteIPInternalProxy</code>, toutes les adresses IP
273     intranet ou privées indiquées par de tels mandataires, y compris les
274     blocs d'adresses 10/8, 172.16/12, 192.168/16, 169.254/16 et 127/8
275     (ou située en dehors du bloc IPv6 public 2000::/3), ne sont pas
276     dignes de confiance en tant qu'adresses IP distantes, et se situent
277     à gauche dans le contenu de l'en-tête
278     <code class="directive">RemoteIPHeader</code>.</p>
279
280     <div class="example"><h3>Exemple d'adresse de confiance (répartiteur de
281     charge</h3><pre class="prettyprint lang-config">
282 RemoteIPHeader X-Forwarded-For
283 RemoteIPTrustedProxy 10.0.2.16/28
284 RemoteIPTrustedProxy proxy.example.com
285         </pre>
286 </div>
287
288 </div>
289 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
290 <div class="directive-section"><h2><a name="RemoteIPTrustedProxyList" id="RemoteIPTrustedProxyList">RemoteIPTrustedProxyList</a> <a name="remoteiptrustedproxylist" id="remoteiptrustedproxylist">Directive</a></h2>
291 <table class="directive">
292 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Déclare les adresses IP intranet clients comme dignes de
293 confiance pour présenter la valeur RemoteIPHeader</td></tr>
294 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RemoteIPTrustedProxyList <var>nom-fichier</var></code></td></tr>
295 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
296 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
297 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_remoteip</td></tr>
298 </table>
299     <p>La directive <code class="directive">RemoteIPTrustedProxyList</code>
300     permet de spécifier un fichier parcouru au démarrage du serveur pour
301     construire une liste d'adresses (ou blocs d'adresses), auxquelles
302     on peut faire confiance pour présenter une valeur RemoteIPHeader
303     valide de l'adresse IP du client.</p>
304
305     <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
306     sinon, toutes les lignes séparées par un caractère nouvelle ligne ou
307     tous les éléments d'une ligne séparés par un espace sont traités de
308     la même façon qu'avec la directive
309     <code class="directive">RemoteIPTrustedProxy</code>.</p>
310
311     <div class="example"><h3>Exemple d'adresse de confiance (répartiteur de
312     charge</h3><pre class="prettyprint lang-config">
313 RemoteIPHeader X-Forwarded-For
314 RemoteIPTrustedProxyList conf/trusted-proxies.lst
315         </pre>
316 </div>
317
318     <div class="example"><h3>conf/mandataires-de-confiance.lst contents</h3><p><code>
319        # Mandataires externes identifiés<br />
320        192.0.2.16/28         #groupe wap phone de mandataires<br />
321        proxy.isp.example.com #un FAI bien connu
322     </code></p></div>
323
324 </div>
325 </div>
326 <div class="bottomlang">
327 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_remoteip.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
328 <a href="../fr/mod/mod_remoteip.html" title="Français">&nbsp;fr&nbsp;</a></p>
329 </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 
330 to last beyond the testing phase of this system, nor do we in any way guarantee that we'll read them.</div>
331 <script type="text/javascript"><!--//--><![CDATA[//><!--
332 var lang = 'fr';
333 var disqus_shortname = 'httpd';
334 var disqus_identifier = window.location.href.replace(/(current|trunk)/, "2.4").replace(/\/[a-z]{2}\//, "/").replace(window.location.protocol, "http:") + '.' + lang;
335 if (disqus_identifier.indexOf("httpd.apache.org") == -1) {
336     document.write('<div id="disqus_thread">\n</div>');
337     (function() {
338                 var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
339                 dsq.src = window.location.protocol + '//' + disqus_shortname + '.disqus.com/embed.js';
340             (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
341         })();
342 } else {
343     document.write("Comments have been disabled for offline viewing.");
344 }
345 //--><!]]></script></div><div id="footer">
346 <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>
347 <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[//><!--
348 if (typeof(prettyPrint) !== undefined) {
349     prettyPrint();
350 }
351 //--><!]]></script>
352 </body></html>