]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_filter.html.fr
Rebuild.
[apache] / docs / manual / mod / mod_filter.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_filter - Serveur Apache HTTP Version 2.4</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/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>
21 <p class="apache">Serveur Apache HTTP Version 2.4</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.4</a> &gt; <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Module Apache mod_filter</h1>
28 <div class="toplang">
29 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_filter.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
30 <a href="../fr/mod/mod_filter.html" title="Français">&nbsp;fr&nbsp;</a></p>
31 </div>
32 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Module de configuration de filtre intelligent sensible au
33 contexte</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>filter_module</td></tr>
36 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_filter.c</td></tr>
37 <tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Versions 2.1 et supérieures</td></tr></table>
38 <h3>Sommaire</h3>
39
40     <p>Ce module permet une configuration intelligente et dépendant du
41     contexte des filtres de contenu en sortie. Par exemple, Apache peut
42     être configuré pour faire traiter différents types de contenus par
43     différents filtres, même lorsque le type de contenu n'est pas connu
44     à l'avance (par exemple dans un serveur mandataire).</p>
45
46     <p>Le fonctionnement de <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> consiste à
47     introduire des branchements dans la chaîne de filtrage. Plutôt que
48     d'insérer directement des filtres dans la chaîne, on insère un
49     sélecteur de filtre qui va effectuer un branchement conditionnel
50     vers un fournisseur de filtre. <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> peut
51     utiliser tout filtre de contenu comme fournisseur ; aucune
52     modification des modules de filtrage existants n'est nécessaire
53     (bien qu'il soit tout de même possible de les simplifier).</p>
54 </div>
55 <div id="quickview"><h3>Sujets</h3>
56 <ul id="topics">
57 <li><img alt="" src="../images/down.gif" /> <a href="#smart">Filtrage intelligent</a></li>
58 <li><img alt="" src="../images/down.gif" /> <a href="#terms">Déclarations de filtres, fournisseurs et
59 chaînes</a></li>
60 <li><img alt="" src="../images/down.gif" /> <a href="#config">Configuration de la chaîne de
61 filtrage</a></li>
62 <li><img alt="" src="../images/down.gif" /> <a href="#errordocs">Filtrage et statut de la réponse</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#upgrade">Mise à jour depuis une configuration du
64 serveur HTTP Apache 2.2</a></li>
65 <li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
66 <li><img alt="" src="../images/down.gif" /> <a href="#protocol">Gestion de protocole</a></li>
67 </ul><h3 class="directives">Directives</h3>
68 <ul id="toc">
69 <li><img alt="" src="../images/down.gif" /> <a href="#addoutputfilterbytype">AddOutputFilterByType</a></li>
70 <li><img alt="" src="../images/down.gif" /> <a href="#filterchain">FilterChain</a></li>
71 <li><img alt="" src="../images/down.gif" /> <a href="#filterdeclare">FilterDeclare</a></li>
72 <li><img alt="" src="../images/down.gif" /> <a href="#filterprotocol">FilterProtocol</a></li>
73 <li><img alt="" src="../images/down.gif" /> <a href="#filterprovider">FilterProvider</a></li>
74 <li><img alt="" src="../images/down.gif" /> <a href="#filtertrace">FilterTrace</a></li>
75 </ul>
76 <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_filter">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_filter">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
77 <ul class="seealso">
78 <li><a href="#comments_section">Commentaires</a></li></ul></div>
79 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
80 <div class="section">
81 <h2><a name="smart" id="smart">Filtrage intelligent</a></h2>
82     <p>Dans le modèle de filtrage traditionnel, les filtres sont insérés
83     sans condition à l'aide de la directive <code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code> et des directives
84     apparentées. Chaque filtre doit ensuite déterminer s'il doit
85     s'exécuter ou non, et les administrateurs du serveur disposent de
86     peu de souplesse pour faire en sorte que la chaîne soit traitée de
87     manière dynamique.</p>
88
89     <p><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>, à l'opposé, fournit aux
90     administrateurs du serveur un grand degré de souplesse pour
91     configurer la chaîne de filtrage. Concrètement, la décision
92     d'insérer un filtre peut être prise en fonction d'une <a href="../expr.html">expression</a> booléenne complexe. Ceci
93     généralise le fonctionnement relativement souple de la directive
94     <code class="directive">AddOutputFilterByType</code>.</p>
95 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
96 <div class="section">
97 <h2><a name="terms" id="terms">Déclarations de filtres, fournisseurs et
98 chaînes</a></h2>
99     <p class="figure">
100     <img src="../images/mod_filter_old.gif" width="160" height="310" alt="[Cette image illustre le modèle de filtrage traditionnel]" /><br />
101     <dfn>Figure 1:</dfn> Le modèle de filtrage traditionnel</p>
102
103     <p>Dans le modèle traditionnel, les filtres en sortie constituent
104     une simple chaîne s'étendant depuis le générateur de contenu (ou
105     gestionnaire) jusqu'au client. Ce fonctionnement peut convenir s'il
106     permet d'atteindre le but recherché, mais pose
107     problème lorsque cette chaîne doit être configurée dynamiquement en
108     fonction de la sortie du gestionnaire.</p>
109
110     <p class="figure">
111     <img src="../images/mod_filter_new.gif" width="423" height="331" alt="[Cette image illustre le modèle de fonctionnement de     mod_filter]" /><br />
112     <dfn>Figure 2:</dfn> Le modèle de fonctionnement de
113     <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code></p>
114
115     <p>Le fonctionnement de <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> consiste à
116     introduire des branchements dans la chaîne de filtrage. Plutôt que
117     d'insérer directement des filtres dans la chaîne, on insère un
118     sélecteur de filtre qui va effectuer un branchement conditionnel
119     vers un fournisseur de filtre. <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> peut
120     utiliser tout filtre de contenu comme fournisseur ; aucune
121     modification des modules de filtrage existants n'est nécessaire
122     (bien qu'il soit tout de même possible de les simplifier). Il peut y
123     avoir plusieurs fournisseurs pour un seul filtre, mais un seul
124     fournisseur sera choisi pour chaque requête.</p>
125
126     <p>Une chaîne de filtrage peut comporter autant d'instances du
127     sélecteur de filtre que l'on souhaite, chacune d'entre elles pouvant
128     disposer de plusieurs fournisseurs. Un sélecteur de filtre possédant
129     un seul fournisseur dont le choix est inconditionnel constitue un
130     cas particulier : cette situation est équivalente à l'insertion
131     directe du filtre dans la chaîne.</p>
132 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
133 <div class="section">
134 <h2><a name="config" id="config">Configuration de la chaîne de
135 filtrage</a></h2>
136     <p>Trois étapes sont nécessaires pour configurer une chaîne de
137     filtrage avec <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>. Voir ci-dessous la
138     description détaillée des directives.</p>
139
140     <dl>
141     <dt>Déclaration des filtres</dt>
142     <dd>La directive <code class="directive"><a href="#filterdeclare">FilterDeclare</a></code> permet de déclarer un
143     filtre en lui assignant un nom et un type. Elle n'est obligatoire
144     que si le filtre n'est pas du type par défaut
145     AP_FTYPE_RESOURCE.</dd>
146
147     <dt>Enregistrement des fournisseurs</dt>
148     <dd>La directive <code class="directive"><a href="#filterprovider">FilterProvider</a></code> permet d'associer un
149     fournisseur à un filtre. Le filtre a été éventuellement déclaré à
150     l'aide de la directive <code class="directive"><a href="#filterdeclare">FilterDeclare</a></code> ; si ce n'est pas le cas, FilterProvider
151     va le déclarer implicitement avec le type par défaut
152     AP_FTYPE_RESOURCE. Le fournisseur doit avoir été enregistré à
153     l'aide de <code>ap_register_output_filter</code> par un module
154     quelconque. Le dernier argument de la directive <code class="directive"><a href="#filterprovider">FilterProvider</a></code> est une expression :
155     le fournisseur s'exécutera pour une requête si et seulement si
156     l'expression est évaluée vraie. L'expression peut évaluer une
157     requête HTTP ou les en-têtes de la réponse, des variables
158     d'environnement, ou le gestionnaire utilisé par cette requête. À la
159     différence des version précédentes, mod_filter supporte désormais
160     les expressions complexes associant des critères multiples au moyen
161     d'une logique AND / OR (&amp;&amp; / ||) et de parenthèses. Pour les
162     détails sur la syntaxe de l'expression, voir la <a href="../expr.html">documentation sur ap_expr</a>.</dd>
163
164     <dt>Configuration de la chaîne de filtrage</dt>
165     <dd>Les directives ci-dessus permettent d'élaborer les éléments
166     d'une chaîne de filtrage intelligente, mais pas de les configurer en
167     vue de leur exécution. La directive <code class="directive"><a href="#filterchain">FilterChain</a></code> élabore une chaîne de filtrage à
168     partir de filtres intelligents déclarés, permettant avec souplesse
169     d'insérer des filtres au début ou à la fin de la chaîne, de
170     supprimer un filtre ou même la chaîne complète.</dd>
171 </dl>
172 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
173 <div class="section">
174 <h2><a name="errordocs" id="errordocs">Filtrage et statut de la réponse</a></h2>
175     <p>Normalement, mod_filter n'applique les filtres qu'aux réponses
176     possédant un statut HTTP 200 (OK). Pour pouvoir filtrer des
177     documents possédant un autre statut, vous devez définir la variable
178     d'environnement <var>filter-errordocs</var>, les réponses étant
179     alors filtrées sans se préoccuper de leur statut. Pour définir ce
180     comportement de manière plus fine, vous pouvez utiliser des
181     conditions dans la directive
182     <code class="directive">FilterProvider</code>.</p>
183 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
184 <div class="section">
185 <h2><a name="upgrade" id="upgrade">Mise à jour depuis une configuration du
186 serveur HTTP Apache 2.2</a></h2>
187     <p>La directive <code class="directive"><a href="#filterprovider">FilterProvider</a></code> a été modifiée par
188     rapport à httpd 2.2 : les arguments <var>match</var> et
189     <var>dispatch</var> ont été remplacés par l'argument unique
190     <var>expression</var> plus polyvalent. En général, il est possible
191     de convertir une paire match/dispatch vers les deux côtés d'une
192     expression, de la manière suivante :</p>
193     <div class="example"><p><code>"dispatch = 'match'"</code></p></div>
194     <p>Les en-têtes de requête et de réponse et les variables
195     d'environnement sont maintenant interprétés selon les syntaxes
196     respectives <var>%{req:foo}</var>, <var>%{resp:foo}</var> et
197     <var>%{env:foo}</var>. Les variables <var>%{HANDLER}</var> et
198     <var>%{CONTENT_TYPE}</var> sont également supportées.</p>
199     <p>Notez que l'évaluation de l'expression ne supporte plus les
200     comparaisons de sous-chaînes. Ces dernières peuvent
201     être remplacées par des comparaisons d'expressions rationnelles.</p>
202 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
203 <div class="section">
204 <h2><a name="examples" id="examples">Exemples</a></h2>
205     <dl>
206     <dt>Inclusions côté serveur (SSI)</dt>
207     <dd>Un exemple simple de remplacement de la directive <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code>
208     <pre class="prettyprint lang-config">FilterDeclare SSI
209 FilterProvider SSI INCLUDES "%{CONTENT_TYPE} =~ m|^text/html|"
210 FilterChain SSI</pre>
211
212     </dd>
213
214     <dt>Inclusions côté serveur (SSI)</dt>
215     <dd>Même exemple que ci-dessus, mais envoi vers un gestionnaire
216     (comportement classique des SSI ; les fichiers .shtml sont
217     traités).
218     <pre class="prettyprint lang-config">FilterProvider SSI INCLUDES "%{HANDLER} = 'server-parsed'"
219 FilterChain SSI</pre>
220
221     </dd>
222
223     <dt>Émulation de mod_gzip avec mod_deflate</dt>
224     <dd>Insertion du filtre INFLATE seulement si l'en-tête
225     Accept-Encoding a une valeur autre que "gzip". Ce filtre s'exécute
226     avec le type ftype CONTENT_SET.
227     <pre class="prettyprint lang-config">FilterDeclare gzip CONTENT_SET
228 FilterProvider gzip inflate "%{req:Accept-Encoding} !~ /gzip/"
229 FilterChain gzip</pre>
230
231     </dd>
232
233     <dt>Diminution de la résolution d'une image</dt>
234     <dd>Supposons que nous voulions réduire la résolution de toutes les
235     images web, et que nous disposions de filtres pour les images GIF,
236     JPEG et PNG.
237     <pre class="prettyprint lang-config">FilterProvider unpack jpeg_unpack "%{CONTENT_TYPE} = 'image/jpeg'"
238 FilterProvider unpack gif_unpack "%{CONTENT_TYPE} = 'image/gif'"
239 FilterProvider unpack png_unpack "%{CONTENT_TYPE} = 'image/png'"
240
241 FilterProvider downsample downsample_filter "%{CONTENT_TYPE} = m|^image/(jpeg|gif|png)|"
242 FilterProtocol downsample "change=yes"
243
244 FilterProvider repack jpeg_pack "%{CONTENT_TYPE} = 'image/jpeg'"
245 FilterProvider repack gif_pack "%{CONTENT_TYPE} = 'image/gif'"
246 FilterProvider repack png_pack "%{CONTENT_TYPE} = 'image/png'"
247 &lt;Location "/image-filter"&gt;
248     FilterChain unpack downsample repack
249 &lt;/Location&gt;</pre>
250
251     </dd>
252     </dl>
253 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
254 <div class="section">
255 <h2><a name="protocol" id="protocol">Gestion de protocole</a></h2>
256     <p>Historiquement, tout filtre doit s'assurer que toute modification
257     qu'il effectue est correctement représentée dans les en-têtes de la
258     réponse HTTP, et qu'il ne s'exécutera pas si cette exécution
259     résultait en une modification interdite. Ceci impose aux auteurs de
260     filtres la corvée de réimplémenter certaines fonctionnalités
261     communes dans chaque filtre :</p>
262
263     <ul>
264     <li>De nombreux filtres modifient les contenus, et de ce fait
265     invalident les balises de ces contenus, leur somme de
266     contrôle, leur condensé (hash) existant, ainsi que leur
267     taille.</li>
268
269     <li>Les filtres qui nécessitent une réponse entière et non tronquée en
270     entrée, doivent s'assurer qu'il n'ont pas reçu une réponse à une
271     requête partielle.</li>
272
273     <li>Les filtres qui modifient la sortie d'un autre filtre doivent
274     s'assurer qu'ils ne violent pas la directive d'un en-tête
275     <code>Cache-Control: no-transform</code> éventuel.</li>
276
277     <li>Les filtres peuvent agir sur des réponses de façon à ce qu'elles
278     ne puissent plus être mises en cache.</li>
279     </ul>
280
281     <p><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> a pour but de gérer de manière
282     générale ces détails de l'implémentation des filtres, réduisant par
283     là-même la complexité des modules de filtrage de contenu. Le
284     travail permettant d'atteindre ce but est cependant toujours en
285     cours ; la directive <code class="directive"><a href="#filterprotocol">FilterProtocol</a></code>
286     implémente certaines de ces fonctionnalités à des fins de
287     compatibilité ascendante avec les modules d'Apache 2.0. Pour les
288     versions 2.1 et supérieures de httpd, les API
289     <code>ap_register_output_filter_protocol</code> et
290     <code>ap_filter_protocol</code> permettent aux modules de filtrage
291     de définir leurs propres comportements.</p>
292
293     <p>Cependant, <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> ne doit pas interférer
294     avec un filtre qui gère déjà tous les aspects du protocole. Par
295     défaut (c'est à dire en l'absence de toute directive <code class="directive"><a href="#filterprotocol">FilterProtocol</a></code>),
296     <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> ne modifiera donc pas les en-têtes.</p>
297
298     <p>Au moment où ces lignes sont écrites, cette fonctionnalité a été
299     très peu testée, car les modules d'usage courant ont été conçus pour
300     fonctionner avec httpd 2.0. Les modules qui l'utilisent devront donc
301     l'expérimenter avec précautions.</p>
302 </div>
303 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
304 <div class="directive-section"><h2><a name="addoutputfilterbytype" id="addoutputfilterbytype">Directive</a> <a name="AddOutputFilterByType" id="AddOutputFilterByType">AddOutputFilterByType</a></h2>
305 <table class="directive">
306 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>assigne un filtre en sortie pour un type de média
307 particulier</td></tr>
308 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>AddOutputFilterByType <var>filtre</var>[;<var>filtre</var>...]
309 <var>type_de_média</var> [<var>type_de_média</var>] ...</code></td></tr>
310 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
311 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
312 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
313 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
314 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Présentait de sévères limitations avant d'être déplacé dans
315 <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> dans la version 2.3.7</td></tr>
316 </table>
317     <p>Cette directive active un <a href="../filter.html">filtre</a> en sortie particulier pour une
318     requête en fonction du <a class="glossarylink" href="../glossary.html#type de média" title="voir glossaire">type de média</a> de la réponse.</p>
319
320     <p>L'exemple suivant active le filtre <code>DEFLATE</code> qui est
321     fourni par le module <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>. Il va compresser
322     toute sortie dont le type MIME est <code>text/html</code> ou
323     <code>text/plain</code> avant de l'envoyer au client.</p>
324
325     <pre class="prettyprint lang-config">AddOutputFilterByType DEFLATE text/html text/plain</pre>
326
327
328     <p>Si vous voulez assigner plusieurs filtres au contenu, leurs noms
329     doivent être séparés par des points-virgules. On peut aussi utiliser
330     une directive <code class="directive">AddOutputFilterByType</code> pour
331     chacun des filtres à assigner.</p>
332
333     <p>La configuration ci-dessous impose le traitement de toute sortie
334     de script dont le type MIME est <code>text/html</code> en premier
335     lieu par le filtre <code>INCLUDES</code>, puis par le filtre
336     <code>DEFLATE</code>.</p>
337
338     <pre class="prettyprint lang-config">&lt;Location "/cgi-bin/"&gt;
339     Options Includes
340     AddOutputFilterByType INCLUDES;DEFLATE text/html
341 &lt;/Location&gt;</pre>
342
343
344
345 <h3>Voir aussi</h3>
346 <ul>
347 <li><code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code></li>
348 <li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li>
349 <li><a href="../filter.html">Les filtres</a></li>
350 </ul>
351 </div>
352 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
353 <div class="directive-section"><h2><a name="filterchain" id="filterchain">Directive</a> <a name="FilterChain" id="FilterChain">FilterChain</a></h2>
354 <table class="directive">
355 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure la chaîne de filtrage</td></tr>
356 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>FilterChain [+=-@!]<var>nom_filtre</var> <var>...</var></code></td></tr>
357 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
358 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Options</td></tr>
359 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
360 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
361 </table>
362     <p>Cette directive permet de configurer une chaîne de filtrage
363     composée de filtres déclarés. <code class="directive">FilterChain</code>
364     accepte un nombre illimité d'arguments, chacun d'entre eux étant
365     précédé d'un caractère de contrôle unique qui détermine l'action à
366     entreprendre :</p>
367
368     <dl>
369     <dt><code>+<var>nom filtre</var></code></dt>
370     <dd>Ajoute<var>nom filtre</var> à la fin de la chaîne de filtrage</dd>
371
372     <dt><code>@<var>nom filtre</var></code></dt>
373     <dd>Ajoute <var>nom filtre</var> au début de la chaîne de filtrage</dd>
374
375     <dt><code>-<var>nom filtre</var></code></dt>
376     <dd>Supprime <var>nom filtre</var> de la chaîne de filtrage</dd>
377
378     <dt><code>=<var>nom filtre</var></code></dt>
379     <dd>Supprime tous les filtres de la chaîne de filtrage existante et
380     les remplace par <var>nom filtre</var></dd>
381
382     <dt><code>!</code></dt>
383     <dd>Supprime tous les filtres de la chaîne de filtrage existante</dd>
384
385     <dt><code><var>nom filtre</var></code></dt>
386     <dd>Équivalent à <code>+<var>nom filtre</var></code></dd>
387     </dl>
388
389 </div>
390 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
391 <div class="directive-section"><h2><a name="filterdeclare" id="filterdeclare">Directive</a> <a name="FilterDeclare" id="FilterDeclare">FilterDeclare</a></h2>
392 <table class="directive">
393 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Déclare un filtre intelligent</td></tr>
394 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>FilterDeclare <var>nom_filtre</var> <var>[type]</var></code></td></tr>
395 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
396 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Options</td></tr>
397 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
398 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
399 </table>
400     <p>Cette directive permet de déclarer un filtre en sortie associé à
401     un en-tête ou une variable d'environnement qui déterminera les
402     conditions de son exécution. Le premier argument est le <var>nom du
403     filtre</var> destiné à être utilisé dans les directives <code class="directive"><a href="#filterprovider">FilterProvider</a></code>, <code class="directive"><a href="#filterchain">FilterChain</a></code> et <code class="directive"><a href="#filterprotocol">FilterProtocol</a></code>.</p>
404
405     <p>Le dernier argument (optionnel) est le type du filtre, et peut
406     prendre les valeurs de <code>ap_filter_type</code>, à savoir
407     <code>RESOURCE</code> (valeur par défaut), <code>CONTENT_SET</code>,
408     <code>PROTOCOL</code>, <code>TRANSCODE</code>,
409     <code>CONNECTION</code> ou <code>NETWORK</code>.</p>
410
411 </div>
412 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
413 <div class="directive-section"><h2><a name="filterprotocol" id="filterprotocol">Directive</a> <a name="FilterProtocol" id="FilterProtocol">FilterProtocol</a></h2>
414 <table class="directive">
415 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Vérifie le respect du protocole HTTP</td></tr>
416 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>FilterProtocol <var>nom_filtre</var> [<var>nom_fournisseur</var>]
417     <var>drapeaux_protocole</var></code></td></tr>
418 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
419 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Options</td></tr>
420 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
421 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
422 </table>
423     <p>Cette directive permet à <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> de s'assurer
424     qu'un filtre ne s'exécutera pas s'il ne doit pas le faire, et que
425     les en-têtes de la réponse HTTP sont définis correctement en tenant
426     compte des effets du filtre.</p>
427
428     <p>Cette directive se présente sous deux formes. Avec trois
429     arguments, elle s'applique de manière spécifique à un <var>nom
430     filtre</var> et un <var>nom fournisseur</var> pour ce filtre. Avec
431     deux arguments, elle s'applique à un <var>nom filtre</var> pour
432     <em>tout</em> fournisseur qu'il actionne.</p>
433
434     <p>Les drapeaux spécifiés sont fusionnés avec les drapeaux que les
435     fournisseurs sous-jacents ont éventuellement enregistrés avec
436     <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>. Par exemple, un filtre peut avoir
437     spécifié en interne un drapeau équivalent à <code>change=yes</code>,
438     mais une configuration particulière du module peut le surcharger
439     en spécifiant <code>change=no</code>.
440     </p>
441
442     <p><var>drapeaux_protocole</var> peut contenir un ou plusieurs
443     drapeaux parmi les suivants :</p>
444
445     <dl>
446     <dt><code>change=yes|no</code></dt>
447     <dd>Indique si le filtre doit modifier le contenu, y compris éventuellement sa
448     taille</dd>
449
450     <dt><code>change=1:1</code></dt>
451     <dd>Le filtre modifie le contenu, mais pas sa taille</dd>
452
453     <dt><code>byteranges=no</code></dt>
454     <dd>Le filtre ne peut pas traiter de réponses à des sous-requêtes et
455     nécessite des réponses complètes en entrée</dd>
456
457     <dt><code>proxy=no</code></dt>
458     <dd>Le filtre ne doit pas s'exécuter dans un contexte de mandataire</dd>
459
460     <dt><code>proxy=transform</code></dt>
461     <dd>Le filtre transforme la réponse de manière incompatible avec
462     l'en-tête HTTP <code>Cache-Control: no-transform</code></dd>
463
464     <dt><code>cache=no</code></dt>
465     <dd>Le filtre fait en sorte que la sortie ne puisse pas être mise en
466     cache (par exemple en introduisant des modifications de contenu
467     aléatoires)</dd>
468     </dl>
469
470 </div>
471 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
472 <div class="directive-section"><h2><a name="filterprovider" id="filterprovider">Directive</a> <a name="FilterProvider" id="FilterProvider">FilterProvider</a></h2>
473 <table class="directive">
474 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enregistre un filtre de contenu</td></tr>
475 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>FilterProvider <var>nom_filtre</var> <var>nom_fournisseur</var>
476  <var>expression</var></code></td></tr>
477 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
478 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>Options</td></tr>
479 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
480 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
481 </table>
482     <p>Cette directive permet d'associer un <em>fournisseur</em> au
483     filtre intelligent. Le fournisseur sera invoqué si et seulement si
484     l'<var>expression</var> est évaluée vraie lorsque le sélecteur de
485     filtre est appelé pour la première fois.</p>
486
487     <p>
488     <var>nom fournisseur</var> doit avoir été enregistré au cours du
489     chargement d'un module à l'aide de
490     <code>ap_register_output_filter</code>.
491     </p>
492
493     <p><var>expression</var> est une expression <a href="../expr.html">ap_expr</a>.</p>
494
495
496 <h3>Voir aussi</h3>
497 <ul>
498 <li><a href="../expr.html">Les expressions dans le serveur HTTP
499 Apache</a>, pour une référence complète et d'autres exemples.</li>
500 <li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li>
501 </ul>
502 </div>
503 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
504 <div class="directive-section"><h2><a name="filtertrace" id="filtertrace">Directive</a> <a name="FilterTrace" id="FilterTrace">FilterTrace</a></h2>
505 <table class="directive">
506 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Obtention d'informations de débogage/diagnostique en
507 provenance de <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code></td></tr>
508 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>FilterTrace <var>nom_filtre</var> <var>niveau</var></code></td></tr>
509 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire</td></tr>
510 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
511 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_filter</td></tr>
512 </table>
513     <p>Cette directive permet d'obtenir des informations de débogage en
514     provenance de <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code>. Elle est conçue pour
515     aider à tester et déboguer les fournisseurs (ou modules de filtrage)
516     ; elle peut aussi apporter une aide à l'utilisation de
517     <code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> lui-même.</p>
518
519     <p>La sortie de débogage dépend de la définition d'argument
520     <var>level</var> :</p>
521     <dl>
522     <dt><code>0</code> (valeur par défaut)</dt>
523     <dd>Aucune information de débogage n'est générée.</dd>
524
525     <dt><code>1</code></dt>
526     <dd><code class="module"><a href="../mod/mod_filter.html">mod_filter</a></code> va enregistrer les ensembles de
527     conteneurs de données (buckets and brigades) qui traversent le
528     filtre dans le journal des erreurs, avant que le fournisseur ne les
529     traite. Ces informations sont similaires à celles générées par <a href="http://apache.webthing.com/mod_diagnostics/">mod_diagnostics</a>.
530     </dd>
531
532     <dt><code>2</code> (pas encore implémenté)</dt>
533     <dd>Ce niveau permettra d'enregistrer l'ensemble des données qui
534     traversent le filtre dans un fichier temporaire avant de les envoyer
535     au fournisseur. <strong>Pour un débogage mono-utilisateur
536     seulement</strong> ; l'enregistrement des données concernant
537     plusieurs requêtes simultannées ne sera pas supporté.</dd>
538     </dl>
539
540 </div>
541 </div>
542 <div class="bottomlang">
543 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_filter.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
544 <a href="../fr/mod/mod_filter.html" title="Français">&nbsp;fr&nbsp;</a></p>
545 </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>
546 <script type="text/javascript"><!--//--><![CDATA[//><!--
547 var comments_shortname = 'httpd';
548 var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_filter.html';
549 (function(w, d) {
550     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
551         d.write('<div id="comments_thread"><\/div>');
552         var s = d.createElement('script');
553         s.type = 'text/javascript';
554         s.async = true;
555         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
556         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
557     }
558     else { 
559         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
560     }
561 })(window, document);
562 //--><!]]></script></div><div id="footer">
563 <p class="apache">Copyright 2016 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
564 <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[//><!--
565 if (typeof(prettyPrint) !== 'undefined') {
566     prettyPrint();
567 }
568 //--><!]]></script>
569 </body></html>