1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>mod_negotiation - Serveur Apache HTTP</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<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" />
<script src="../style/scripts/prettify.js" type="text/javascript">
</script>
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<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>
<p class="apache">Serveur Apache HTTP Version 2.4</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.4</a> > <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_negotiation</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_negotiation.html" title="Français"> fr </a> |
<a href="../ja/mod/mod_negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Effectue la <a href="../content-negotiation.html">négociation de
contenu</a></td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>negotiation_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_negotiation.c</td></tr></table>
<h3>Sommaire</h3>
<p>La négociation de contenu, ou plus précisément la sélection de
contenu, est la sélection parmi plusieurs documents disponibles, du
document qui "colle" au plus près des possibilités du client. Pour y
parvenir, deux méthodes sont employées.</p>
<ul>
<li>Une table de correspondances de types (un fichier associé au
gestionnaire <code>type-map</code>) qui contient une liste
explicite des fichiers contenant les différentes variantes.</li>
<li>Une recherche multivues (Multiviews) (activée par l'<code class="directive"><a href="../mod/core.html#options">Options</a></code> <code>Multiviews</code>), où le
serveur effectue une recherche de correspondance de modèle de nom
de fichier implicite, et fait son choix parmi les résultats.</li>
</ul>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#cachenegotiateddocs">CacheNegotiatedDocs</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#forcelanguagepriority">ForceLanguagePriority</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#languagepriority">LanguagePriority</a></li>
</ul>
<h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#typemaps">Tables de correspondances de types</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#multiviews">Multivues</a></li>
</ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li>
<li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li>
<li><a href="../content-negotiation.html">Négociation de
contenu</a></li>
<li><a href="../env.html">Variables d'environnement</a></li>
</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="typemaps" id="typemaps">Tables de correspondances de types</a></h2>
<p>Une table de correspondances de types possède un format similaire
à celui des en-têtes de messagerie RFC822. Elle contient des
descriptions de documents séparées par des lignes vides, toute ligne
commençant par un dièse ('#') étant considérée comme un
commentaire. Une description de document comporte plusieurs
enregistrements d'en-têtes ; chaque enregistrement peut être réparti
sur plusieurs lignes à condition que les lignes supplémentaires
commencent par un ou plusieurs espaces. Lors du traitement, les
espaces de début de ligne seront supprimés et les lignes
concaténées. L'enregistrement d'un en-tête comprend un mot-clé qui
se termine toujours par un caractère "deux-points" ':', suivi d'une
valeur. Les espaces sont autorisés entre le nom d'en-tête et sa
valeur, ainsi qu'entre les différents éléments de la valeur. Les
en-têtes autorisés sont :</p>
<dl>
<dt><code>Content-Encoding:</code></dt>
<dd>Le codage du fichier. Apache ne reconnaît que les codages
définis par une directive <code class="directive"><a href="../mod/mod_mime.html#addencoding">AddEncoding</a></code>. Sont normalement inclus
les codages <code>x-compress</code> pour les fichiers compressés
avec compress, et <code>x-gzip</code> pour les fichiers compressés
avec gzip. Le préfixe <code>x-</code> est ignoré lors des
comparaisons de codages.</dd>
<dt><code>Content-Language:</code></dt>
<dd>Le(s) langage(s) de la variante, sous la forme d'un symbole de
langage Internet standard (<a href="http://www.ietf.org/rfc/rfc1766.txt">RFC 1766</a>). Par
exemple, <code>en</code> correspond à l'anglais. Si la variante
contient plusieurs langages, ils sont séparés par des
virgules.</dd>
<dt><code>Content-Length:</code></dt>
<dd>La taille du fichier en octets. Si cet en-tête n'est pas
présent, c'est la taille réelle du fichier qui est utilisée.</dd>
<dt><code>Content-Type:</code></dt>
<dd>
Le <a class="glossarylink" href="../glossary.html#mime-type" title="voir glossaire">type MIME</a> du document
avec des paramètres optionnels. Les paramètres sont séparés du
type de médium ainsi qu'entre eux par un point-virgule, et
possèdent la syntaxe <code>nom=valeur</code>. Les paramètres
courants sont :
<dl>
<dt><code>level</code></dt>
<dd>un entier spécifiant la version du type de média. Pour
<code>text/html</code>, la valeur par défaut est 2, sinon
0.</dd>
<dt><code>qs</code></dt>
<dd>un nombre en virgule flottante de 0[.000] à 1[.000], indiquant la
"qualité" relative de la variante courante par rapport aux
autres variantes disponibles, indépendamment des possibilités
du client. Par exemple, un fichier jpeg est en général une
source de qualité supérieure à un fichier ascii s'il est censé
représenter une image. Cependant, si la ressource représentée
est une image ascii, un fichier ascii possèdera une qualité
supérieure à un fichier jpeg. Toutes les valeurs de
<code>qs</code> sont donc spécifiques à une certaine
ressource.</dd>
</dl>
<div class="example"><h3>Exemple</h3><p><code>
Content-Type: image/jpeg; qs=0.8
</code></p></div>
</dd>
<dt><code>URI:</code></dt>
<dd>l'URI du fichier contenant la variante (du type de médium
donné, codé selon le codage de contenu donné). Cet URI est
considéré comme relatif au fichier de correspondances ; il doit
être situé sur le même serveur, et doit faire référence au
fichier auquel le client se verrait accorder l'accès s'il était
requis directement.</dd>
<dt><code>Body:</code></dt>
<dd>Le contenu réel de la ressource
peut être inclus dans la table de correspondances en utilisant
l'en-tête Body. Cet en-tête doit contenir une chaîne désignant un
délimiteur pour le contenu du corps. Les lignes suivantes du
fichier de correspondances de types seront alors considérées comme
parties du corps de la ressource jusqu'à ce que le délimiteur soit
détecté.
<div class="example"><h3>Exemple:</h3><p><code>
Body:----xyz----<br />
<html><br />
<body><br />
<p>Contenu de la page.</p><br />
</body><br />
</html><br />
----xyz----
</code></p></div>
</dd>
</dl>
<p>Considérons une ressource, <code>document.html</code>, disponible
en anglais, en français et en allemand. Les fichiers correspondants
se nomment respectivement <code>document.html.en</code>,
<code>document.html.fr</code>, et <code>document.html.de</code>. Le
fichier de correspondances de types se nommera
<code>document.html.var</code> et contiendra ce qui suit :</p>
<div class="example"><p><code>
URI: document.html<br />
<br />
Content-language: en<br />
Content-type: text/html<br />
URI: document.html.en<br />
<br />
Content-language: fr<br />
Content-type: text/html<br />
URI: document.html.fr<br />
<br />
Content-language: de<br />
Content-type: text/html<br />
URI: document.html.de<br />
<br />
</code></p></div>
<p>Ces quatre fichiers doivent se trouver dans le même répertoire,
et le fichier <code>.var</code> doit être associé au gestionnaire
<code>type-map</code> via une directive <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> :</p>
<pre class="prettyprint lang-config">
AddHandler type-map .var
</pre>
<p>A l'arrivée d'une requête pour la ressource
<code>document.html.var</code>, la variante de
<code>document.html</code> qui correspond le mieux à la préference
de langage spécifiée dans l'en-tête de la requête de l'utilisateur
<code>Accept-Language</code> sera choisie.</p>
<p>Si <code>Multiviews</code> est activée, et si <code class="directive"><a href="../mod/mod_mime.html#multiviewsmatch">MultiviewsMatch</a></code> est définie à
"handlers" ou "any", une requête pour <code>document.html</code> va
rechercher <code>document.html.var</code>, et continuer la
négociation avec le gestionnaire explicite type-map.</p>
<p>D'autres directives de configuration, comme <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, peuvent être utilisées pour
associer <code>document.html</code> avec
<code>document.html.var</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="multiviews" id="multiviews">Multivues</a></h2>
<p>Une recherche Multivues est activée par l'<code class="directive"><a href="../mod/core.html#options">Options</a></code> <code>Multiviews</code>. Si le
serveur reçoit une requête pour <code>/un/répertoire/foo</code>, et
si <code>/un/répertoire/foo</code> n'existe pas, le serveur parcourt
le répertoire à la recherche de tous les fichiers de nom
<code>foo.*</code>, et simule véritablement une correspondance de
type qui nomme tous ces fichiers en leur assignant les mêmes type
de média et codage de contenu qu'ils auraient eus si le client avait
requis l'un d'entre eux avec son nom complet. Il choisit ensuite le
fichier qui correspond le mieux au profile du client, puis renvoie
le document.</p>
<p>La directive <code class="directive"><a href="../mod/mod_mime.html#multiviewsmatch">MultiviewsMatch</a></code> définit si Apache doit
prendre en compte les fichiers qui ne comportent pas de métadonnées
de négociation de contenu lors du choix du fichier à servir.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="CacheNegotiatedDocs" id="CacheNegotiatedDocs">CacheNegotiatedDocs</a> <a name="cachenegotiateddocs" id="cachenegotiateddocs">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Permet la mise en cache au niveau des serveurs mandataires
des documents dont le contenu a été négocié</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>CacheNegotiatedDocs On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>CacheNegotiatedDocs Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_negotiation</td></tr>
</table>
<p>Si elle est définie à "on", cette directive permet la mise en
cache au niveau des serveurs mandataires des documents dont le
contenu a été négocié. Le processus de mise en cache sera alors plus
efficace, mais des clients se trouvant derrière le mandataire
seront alors susceptibles de se voir servir des versions de
documents qui ne correspondent pas forcément à leurs attentes.</p>
<p>Cette directive ne s'applique qu'aux requêtes en provenance de
navigateurs HTTP/1.0. HTTP/1.1 fournit un bien meilleur contrôle de
la mise en cache des documents au contenu négocié, et cette
directive n'a aucun effet sur les réponses aux requêtes
HTTP/1.1.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ForceLanguagePriority" id="ForceLanguagePriority">ForceLanguagePriority</a> <a name="forcelanguagepriority" id="forcelanguagepriority">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Action à entreprendre si un document acceptable unique
n'est pas trouvé</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ForceLanguagePriority Prefer</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_negotiation</td></tr>
</table>
<p>La directive <code class="directive">ForceLanguagePriority</code> utilise
le langage défini par la directive <code class="directive"><a href="#languagepriority">LanguagePriority</a></code> pour terminer
la négociation lorsque le serveur n'est pas en mesure de trouver une
solution satisfaisante unique.</p>
<p><code>ForceLanguagePriority Prefer</code> utilise la directive
<code>LanguagePriority</code> pour servir le résultat d'un choix
unique, au lieu de renvoyer un résultat HTTP 300 (MULTIPLE CHOICES),
lorsque que plusieurs choix équivalents sont disponibles. Par
exemple, avec les deux directives ci-dessous, si l'en-tête
<code>Accept-Language</code> de l'utilisateur assigne à
<code>en</code> et <code>de</code> une qualité de <code>.500</code>
(les deux langages sont également acceptables), alors c'est la
première variante acceptable de langue <code>en</code> qui sera
servie.</p>
<pre class="prettyprint lang-config">
LanguagePriority en fr de
ForceLanguagePriority Prefer
</pre>
<p><code>ForceLanguagePriority Fallback</code> utilise la directive
<code class="directive"><a href="#languagepriority">LanguagePriority</a></code>
pour servir un résultat valide, au lieu de renvoyer un résultat HTTP
406 (NOT ACCEPTABLE). Avec les deux directives ci-dessous, si
l'en-tête <code>Accept-Language</code> de l'utilisateur ne mentionne
que les réponses de langage <code>es</code>, et si aucune variante
dans cette langue n'est trouvée, c'est la première variante de la
liste définie par la directive <code class="directive"><a href="#languagepriority">LanguagePriority</a></code> qui sera servie.</p>
<pre class="prettyprint lang-config">
LanguagePriority en fr de
ForceLanguagePriority Fallback
</pre>
<p>Les deux options, <code>Prefer</code> et <code>Fallback</code>,
peuvent être spécifiées, de façon à ce que la variante servie soit
la première variante qui convient définie par la directive
<code class="directive"><a href="#languagepriority">LanguagePriority</a></code> si
plusieurs variantes sont également acceptables, ou le premier
document disponible si aucune variante ne convient à la liste de
langages acceptables fournie par le client.</p>
<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addlanguage">AddLanguage</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="LanguagePriority" id="LanguagePriority">LanguagePriority</a> <a name="languagepriority" id="languagepriority">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>L'ordre de priorité des variantes de langages pour les
cas où le client n'a pas formulé de préférences</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>LanguagePriority <var>langage-MIME</var> [<var>langage-MIME</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_negotiation</td></tr>
</table>
<p>La directive <code class="directive">LanguagePriority</code> permet de
définir, au cours du traitement d'une requête Multivues, l'ordre de
priorité des variantes de langages pour les cas
où le client n'a pas formulé de préférences. La liste énumère les
<var>langages-MIME</var> dans un ordre de préférences
décroissantes.</p>
<pre class="prettyprint lang-config">
LanguagePriority en fr de
</pre>
<p>Dans le cas d'une requête pour <code>foo.html</code>, si
<code>foo.html.fr</code> et <code>foo.html.de</code> existent, et si
le client n'a pas formulé de préférences, c'est le fichier
<code>foo.html.fr</code> qui sera renvoyé.</p>
<p>Notez que cette directive n'a d'effet que si le 'meilleur'
langage n'a pas pu être déterminé d'une autre manière ou si la
valeur de la directive <code class="directive"><a href="#forcelanguagepriority">ForceLanguagePriority</a></code> est
différente de <code>None</code>. En général, c'est le client qui
détermine le langage préféré, non le serveur.</p>
<h3>Voir aussi</h3>
<ul>
<li><code class="directive"><a href="../mod/mod_mime.html#addlanguage">AddLanguage</a></code></li>
</ul>
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_negotiation.html" title="Français"> fr </a> |
<a href="../ja/mod/mod_negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a></p>
</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&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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_negotiation.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2013 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<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[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>
|