]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_negotiation.xml.fr
Merge in APR[-util] macros from branches/trunk-buildconf-noapr
[apache] / docs / manual / mod / mod_negotiation.xml.fr
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 -->
7
8 <!--
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
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
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.
23 -->
24
25 <modulesynopsis metafile="mod_negotiation.xml.meta">
26
27 <name>mod_negotiation</name>
28 <description>Effectue la <a
29 href="../content-negotiation.html">négociation de
30 contenu</a></description>
31 <status>Base</status>
32 <sourcefile>mod_negotiation.c</sourcefile>
33 <identifier>negotiation_module</identifier>
34
35 <summary>
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>
40
41     <ul>
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>
45
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>
50     </ul>
51 </summary>
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
55 contenu</a></seealso>
56 <seealso><a href="../env.html">Variables d'environnement</a></seealso>
57
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>
73
74     <dl>
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>
83
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
90       virgules.</dd>
91
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>
95
96       <dt><code>Content-Type:</code></dt>
97
98       <dd>
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
103         courants sont :
104
105         <dl>
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
109           0.</dd>
110
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
121           ressource.</dd>
122         </dl>
123
124         <example><title>Exemple</title>
125           Content-Type: image/jpeg; qs=0.8
126         </example>
127       </dd>
128
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>
136
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
144       détecté.
145
146       <example><title>Exemple:</title>
147         Body:----xyz----<br />
148         &lt;html&gt;<br />
149         &lt;body&gt;<br />
150         &lt;p&gt;Contenu de la page.&lt;/p&gt;<br />
151         &lt;/body&gt;<br />
152         &lt;/html&gt;<br />
153         ----xyz----
154       </example>
155       </dd>
156     </dl>
157
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>
164
165     <example>
166     URI: document.html<br />
167     <br />
168     Content-language: en<br />
169     Content-type: text/html<br />
170     URI: document.html.en<br />
171     <br />
172     Content-language: fr<br />
173     Content-type: text/html<br />
174     URI: document.html.fr<br />
175     <br />
176     Content-language: de<br />
177     Content-type: text/html<br />
178     URI: document.html.de<br />
179     <br />
180
181     </example>
182
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>
187
188     <highlight language="config">
189     AddHandler type-map .var
190     </highlight>
191
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>
197
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>
203
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>
208 </section>
209
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
221     le document.</p>
222
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>
227 </section>
228
229 <directivesynopsis>
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>
236 </contextlist>
237
238 <usage>
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>
245
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
250     HTTP/1.1.</p>
251
252 </usage>
253 </directivesynopsis>
254
255 <directivesynopsis>
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>
264
265 <usage>
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>
271
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
281     servie.</p>
282
283     <highlight language="config">
284 LanguagePriority en fr de
285 ForceLanguagePriority Prefer
286     </highlight>
287
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>
297
298     <highlight language="config">
299 LanguagePriority en fr de
300 ForceLanguagePriority Fallback
301     </highlight>
302
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>
310 </usage>
311 <seealso><directive module="mod_mime">AddLanguage</directive></seealso>
312 </directivesynopsis>
313
314 <directivesynopsis>
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>]
319 ...</syntax>
320 <contextlist><context>server config</context><context>virtual host</context>
321 <context>directory</context><context>.htaccess</context></contextlist>
322 <override>FileInfo</override>
323
324 <usage>
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
330     décroissantes.</p>
331
332     <highlight language="config">
333       LanguagePriority en fr de
334     </highlight>
335
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>
340
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>
347 </usage>
348 <seealso><directive module="mod_mime">AddLanguage</directive></seealso>
349 </directivesynopsis>
350
351 </modulesynopsis>