1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1749828 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <modulesynopsis metafile="mod_negotiation.xml.meta">
27 <name>mod_negotiation</name>
28 <description>Effectue la <a
29 href="../content-negotiation.html">négociation de
30 contenu</a></description>
32 <sourcefile>mod_negotiation.c</sourcefile>
33 <identifier>negotiation_module</identifier>
36 <p>La négociation de contenu, ou plus précisément la sélection de
37 contenu, est la sélection parmi plusieurs documents disponibles, du
38 document qui "colle" au plus près des possibilités du client. Pour y
39 parvenir, deux méthodes sont employées.</p>
42 <li>Une table de correspondances de types (un fichier associé au
43 gestionnaire <code>type-map</code>) qui contient une liste
44 explicite des fichiers contenant les différentes variantes.</li>
46 <li>Une recherche multivues (Multiviews) (activée par l'<directive
47 module="core">Options</directive> <code>Multiviews</code>), où le
48 serveur effectue une recherche de correspondance de modèle de nom
49 de fichier implicite, et fait son choix parmi les résultats.</li>
52 <seealso><directive module="core">Options</directive></seealso>
53 <seealso><module>mod_mime</module></seealso>
54 <seealso><a href="../content-negotiation.html">Négociation de
56 <seealso><a href="../env.html">Variables d'environnement</a></seealso>
58 <section id="typemaps"><title>Tables de correspondances de types</title>
59 <p>Une table de correspondances de types possède un format similaire
60 à celui des en-têtes de messagerie RFC822. Elle contient des
61 descriptions de documents séparées par des lignes vides, toute ligne
62 commençant par un dièse ('#') étant considérée comme un
63 commentaire. Une description de document comporte plusieurs
64 enregistrements d'en-têtes ; chaque enregistrement peut être réparti
65 sur plusieurs lignes à condition que les lignes supplémentaires
66 commencent par un ou plusieurs espaces. Lors du traitement, les
67 espaces de début de ligne seront supprimés et les lignes
68 concaténées. L'enregistrement d'un en-tête comprend un mot-clé qui
69 se termine toujours par un caractère "deux-points" ':', suivi d'une
70 valeur. Les espaces sont autorisés entre le nom d'en-tête et sa
71 valeur, ainsi qu'entre les différents éléments de la valeur. Les
72 en-têtes autorisés sont :</p>
75 <dt><code>Content-Encoding:</code></dt>
76 <dd>Le codage du fichier. Apache ne reconnaît que les codages
77 définis par une directive <directive
78 module="mod_mime">AddEncoding</directive>. Sont normalement inclus
79 les codages <code>x-compress</code> pour les fichiers compressés
80 avec compress, et <code>x-gzip</code> pour les fichiers compressés
81 avec gzip. Le préfixe <code>x-</code> est ignoré lors des
82 comparaisons de codages.</dd>
84 <dt><code>Content-Language:</code></dt>
85 <dd>Le(s) langage(s) de la variante, sous la forme d'un symbole de
86 langage Internet standard (<a
87 href="http://www.ietf.org/rfc/rfc1766.txt">RFC 1766</a>). Par
88 exemple, <code>en</code> correspond à l'anglais. Si la variante
89 contient plusieurs langages, ils sont séparés par des
92 <dt><code>Content-Length:</code></dt>
93 <dd>La taille du fichier en octets. Si cet en-tête n'est pas
94 présent, c'est la taille réelle du fichier qui est utilisée.</dd>
96 <dt><code>Content-Type:</code></dt>
99 Le <glossary ref="mime-type">type MIME</glossary> du document
100 avec des paramètres optionnels. Les paramètres sont séparés du
101 type de médium ainsi qu'entre eux par un point-virgule, et
102 possèdent la syntaxe <code>nom=valeur</code>. Les paramètres
106 <dt><code>level</code></dt>
107 <dd>un entier spécifiant la version du type de média. Pour
108 <code>text/html</code>, la valeur par défaut est 2, sinon
111 <dt><code>qs</code></dt>
112 <dd>un nombre en virgule flottante de 0[.000] à 1[.000], indiquant la
113 "qualité" relative de la variante courante par rapport aux
114 autres variantes disponibles, indépendamment des possibilités
115 du client. Par exemple, un fichier jpeg est en général une
116 source de qualité supérieure à un fichier ascii s'il est censé
117 représenter une image. Cependant, si la ressource représentée
118 est une image ascii, un fichier ascii possèdera une qualité
119 supérieure à un fichier jpeg. Toutes les valeurs de
120 <code>qs</code> sont donc spécifiques à une certaine
124 <example><title>Exemple</title>
125 Content-Type: image/jpeg; qs=0.8
129 <dt><code>URI:</code></dt>
130 <dd>l'URI du fichier contenant la variante (du type de médium
131 donné, codé selon le codage de contenu donné). Cet URI est
132 considéré comme relatif au fichier de correspondances ; il doit
133 être situé sur le même serveur, et doit faire référence au
134 fichier auquel le client se verrait accorder l'accès s'il était
135 requis directement.</dd>
137 <dt><code>Body:</code></dt>
138 <dd>Le contenu réel de la ressource
139 peut être inclus dans la table de correspondances en utilisant
140 l'en-tête Body. Cet en-tête doit contenir une chaîne désignant un
141 délimiteur pour le contenu du corps. Les lignes suivantes du
142 fichier de correspondances de types seront alors considérées comme
143 parties du corps de la ressource jusqu'à ce que le délimiteur soit
146 <example><title>Exemple:</title>
147 Body:----xyz----<br />
150 <p>Contenu de la page.</p><br />
158 <p>Considérons une ressource, <code>document.html</code>, disponible
159 en anglais, en français et en allemand. Les fichiers correspondants
160 se nomment respectivement <code>document.html.en</code>,
161 <code>document.html.fr</code>, et <code>document.html.de</code>. Le
162 fichier de correspondances de types se nommera
163 <code>document.html.var</code> et contiendra ce qui suit :</p>
166 URI: document.html<br />
168 Content-language: en<br />
169 Content-type: text/html<br />
170 URI: document.html.en<br />
172 Content-language: fr<br />
173 Content-type: text/html<br />
174 URI: document.html.fr<br />
176 Content-language: de<br />
177 Content-type: text/html<br />
178 URI: document.html.de<br />
183 <p>Ces quatre fichiers doivent se trouver dans le même répertoire,
184 et le fichier <code>.var</code> doit être associé au gestionnaire
185 <code>type-map</code> via une directive <directive
186 module="mod_mime">AddHandler</directive> :</p>
188 <highlight language="config">
189 AddHandler type-map .var
192 <p>A l'arrivée d'une requête pour la ressource
193 <code>document.html.var</code>, la variante de
194 <code>document.html</code> qui correspond le mieux à la préference
195 de langage spécifiée dans l'en-tête de la requête de l'utilisateur
196 <code>Accept-Language</code> sera choisie.</p>
198 <p>Si <code>Multiviews</code> est activée, et si <directive
199 module="mod_mime">MultiviewsMatch</directive> est définie à
200 "handlers" ou "any", une requête pour <code>document.html</code> va
201 rechercher <code>document.html.var</code>, et continuer la
202 négociation avec le gestionnaire explicite type-map.</p>
204 <p>D'autres directives de configuration, comme <directive
205 module="mod_alias">Alias</directive>, peuvent être utilisées pour
206 associer <code>document.html</code> avec
207 <code>document.html.var</code>.</p>
210 <section id="multiviews"><title>Multivues</title>
211 <p>Une recherche Multivues est activée par l'<directive
212 module="core">Options</directive> <code>Multiviews</code>. Si le
213 serveur reçoit une requête pour <code>/un/répertoire/foo</code>, et
214 si <code>/un/répertoire/foo</code> n'existe pas, le serveur parcourt
215 le répertoire à la recherche de tous les fichiers de nom
216 <code>foo.*</code>, et simule véritablement une correspondance de
217 type qui nomme tous ces fichiers en leur assignant les mêmes type
218 de média et codage de contenu qu'ils auraient eus si le client avait
219 requis l'un d'entre eux avec son nom complet. Il choisit ensuite le
220 fichier qui correspond le mieux au profile du client, puis renvoie
223 <p>La directive <directive
224 module="mod_mime">MultiviewsMatch</directive> définit si Apache doit
225 prendre en compte les fichiers qui ne comportent pas de métadonnées
226 de négociation de contenu lors du choix du fichier à servir.</p>
230 <name>CacheNegotiatedDocs</name>
231 <description>Permet la mise en cache au niveau des serveurs mandataires
232 des documents dont le contenu a été négocié</description>
233 <syntax>CacheNegotiatedDocs On|Off</syntax>
234 <default>CacheNegotiatedDocs Off</default>
235 <contextlist><context>server config</context><context>virtual host</context>
239 <p>Si elle est définie à "on", cette directive permet la mise en
240 cache au niveau des serveurs mandataires des documents dont le
241 contenu a été négocié. Le processus de mise en cache sera alors plus
242 efficace, mais des clients se trouvant derrière le mandataire
243 seront alors susceptibles de se voir servir des versions de
244 documents qui ne correspondent pas forcément à leurs attentes.</p>
246 <p>Cette directive ne s'applique qu'aux requêtes en provenance de
247 navigateurs HTTP/1.0. HTTP/1.1 fournit un bien meilleur contrôle de
248 la mise en cache des documents au contenu négocié, et cette
249 directive n'a aucun effet sur les réponses aux requêtes
256 <name>ForceLanguagePriority</name>
257 <description>Action à entreprendre si un document acceptable unique
258 n'est pas trouvé</description>
259 <syntax>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</syntax>
260 <default>ForceLanguagePriority Prefer</default>
261 <contextlist><context>server config</context><context>virtual host</context>
262 <context>directory</context><context>.htaccess</context></contextlist>
263 <override>FileInfo</override>
266 <p>La directive <directive>ForceLanguagePriority</directive> utilise
267 le langage défini par la directive <directive
268 module="mod_negotiation">LanguagePriority</directive> pour terminer
269 la négociation lorsque le serveur n'est pas en mesure de trouver une
270 solution satisfaisante unique.</p>
272 <p><code>ForceLanguagePriority Prefer</code> utilise la directive
273 <code>LanguagePriority</code> pour servir le résultat d'un choix
274 unique, au lieu de renvoyer un résultat HTTP 300 (MULTIPLE CHOICES),
275 lorsque que plusieurs choix équivalents sont disponibles. Par
276 exemple, avec les deux directives ci-dessous, si l'en-tête
277 <code>Accept-Language</code> de l'utilisateur assigne à
278 <code>en</code> et <code>de</code> une qualité de <code>.500</code>
279 (les deux langages sont également acceptables), alors c'est la
280 première variante acceptable de langue <code>en</code> qui sera
283 <highlight language="config">
284 LanguagePriority en fr de
285 ForceLanguagePriority Prefer
288 <p><code>ForceLanguagePriority Fallback</code> utilise la directive
289 <directive module="mod_negotiation">LanguagePriority</directive>
290 pour servir un résultat valide, au lieu de renvoyer un résultat HTTP
291 406 (NOT ACCEPTABLE). Avec les deux directives ci-dessous, si
292 l'en-tête <code>Accept-Language</code> de l'utilisateur ne mentionne
293 que les réponses de langage <code>es</code>, et si aucune variante
294 dans cette langue n'est trouvée, c'est la première variante de la
295 liste définie par la directive <directive module="mod_negotiation"
296 >LanguagePriority</directive> qui sera servie.</p>
298 <highlight language="config">
299 LanguagePriority en fr de
300 ForceLanguagePriority Fallback
303 <p>Les deux options, <code>Prefer</code> et <code>Fallback</code>,
304 peuvent être spécifiées, de façon à ce que la variante servie soit
305 la première variante qui convient définie par la directive
306 <directive module="mod_negotiation">LanguagePriority</directive> si
307 plusieurs variantes sont également acceptables, ou le premier
308 document disponible si aucune variante ne convient à la liste de
309 langages acceptables fournie par le client.</p>
311 <seealso><directive module="mod_mime">AddLanguage</directive></seealso>
315 <name>LanguagePriority</name>
316 <description>L'ordre de priorité des variantes de langages pour les
317 cas où le client n'a pas formulé de préférences</description>
318 <syntax>LanguagePriority <var>langage-MIME</var> [<var>langage-MIME</var>]
320 <contextlist><context>server config</context><context>virtual host</context>
321 <context>directory</context><context>.htaccess</context></contextlist>
322 <override>FileInfo</override>
325 <p>La directive <directive>LanguagePriority</directive> permet de
326 définir, au cours du traitement d'une requête Multivues, l'ordre de
327 priorité des variantes de langages pour les cas
328 où le client n'a pas formulé de préférences. La liste énumère les
329 <var>langages-MIME</var> dans un ordre de préférences
332 <highlight language="config">
333 LanguagePriority en fr de
336 <p>Dans le cas d'une requête pour <code>foo.html</code>, si
337 <code>foo.html.fr</code> et <code>foo.html.de</code> existent, et si
338 le client n'a pas formulé de préférences, c'est le fichier
339 <code>foo.html.fr</code> qui sera renvoyé.</p>
341 <p>Notez que cette directive n'a d'effet que si le 'meilleur'
342 langage n'a pas pu être déterminé d'une autre manière ou si la
343 valeur de la directive <directive
344 module="mod_negotiation">ForceLanguagePriority</directive> est
345 différente de <code>None</code>. En général, c'est le client qui
346 détermine le langage préféré, non le serveur.</p>
348 <seealso><directive module="mod_mime">AddLanguage</directive></seealso>