2N/A<?
xml version="1.0"?>
2N/A<!-- English Revision : 1515413 --> 2N/A<!-- French translation : Lucien GENTIS --> 2N/A<!-- Reviewed by : Vincent Deffontaines --> 2N/A Licensed to the Apache Software Foundation (ASF) under one or more 2N/A contributor license agreements. See the NOTICE file distributed with 2N/A this work for additional information regarding copyright ownership. 2N/A The ASF licenses this file to You under the Apache License, Version 2.0 2N/A (the "License"); you may not use this file except in compliance with 2N/A the License. You may obtain a copy of the License at 2N/A Unless required by applicable law or agreed to in writing, software 2N/A distributed under the License is distributed on an "AS IS" BASIS, 2N/A WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2N/A See the License for the specific language governing permissions and 2N/A limitations under the License. 2N/A<
name>mod_negotiation</
name>
2N/A<
description>Effectue la <
a 2N/Acontenu</
a></
description>
2N/A<
status>Base</
status>
12N/A<
identifier>negotiation_module</
identifier>
2N/A <
p>La négociation de contenu, ou plus précisément la sélection de
2N/A contenu, est la sélection parmi plusieurs documents disponibles, du
26N/A document qui "colle" au plus près des possibilités du client. Pour y
26N/A parvenir, deux méthodes sont employées.</
p>
26N/A <
li>Une table de correspondances de types (un fichier associé au
26N/A gestionnaire <
code>type-map</
code>) qui contient une liste
26N/A explicite des fichiers contenant les différentes variantes.</
li>
26N/A <
li>Une recherche multivues (Multiviews) (activée par l'<
directive 26N/A module="core">Options</
directive> <
code>Multiviews</
code>), où le
26N/A serveur effectue une recherche de correspondance de modèle de nom
26N/A de fichier implicite, et fait son choix parmi les résultats.</
li>
26N/A<
seealso><
directive module="core">Options</
directive></
seealso>
26N/A<
seealso><
module>mod_mime</
module></
seealso>
26N/Acontenu</
a></
seealso>
26N/A<
seealso><
a href="/env.html">Variables d'environnement</
a></
seealso>
26N/A<
section id="typemaps"><
title>Tables de correspondances de types</
title>
26N/A <
p>Une table de correspondances de types possède un format similaire
26N/A à celui des en-têtes de messagerie RFC822. Elle contient des
26N/A descriptions de documents séparées par des lignes vides, toute ligne
2N/A commençant par un dièse ('#') étant considérée comme un
26N/A commentaire. Une description de document comporte plusieurs
26N/A enregistrements d'en-têtes ; chaque enregistrement peut être réparti
26N/A sur plusieurs lignes à condition que les lignes supplémentaires
26N/A commencent par un ou plusieurs espaces. Lors du traitement, les
26N/A espaces de début de ligne seront supprimés et les lignes
26N/A concaténées. L'enregistrement d'un en-tête comprend un mot-clé qui
26N/A se termine toujours par un caractère "deux-points" ':', suivi d'une
26N/A valeur. Les espaces sont autorisés entre le nom d'en-tête et sa
26N/A valeur, ainsi qu'entre les différents éléments de la valeur. Les
26N/A en-têtes autorisés sont :</
p>
26N/A <
dt><
code>Content-Encoding:</
code></
dt>
2N/A <
dd>Le codage du fichier. Apache ne reconnaît que les codages
26N/A définis par une directive <
directive 26N/A module="mod_mime">AddEncoding</
directive>. Sont normalement inclus
27N/A les codages <
code>x-compress</
code> pour les fichiers compressés
27N/A avec compress, et <
code>x-gzip</
code> pour les fichiers compressés
27N/A avec gzip. Le préfixe <
code>x-</
code> est ignoré lors des
26N/A comparaisons de codages.</
dd>
12N/A <
dt><
code>Content-Language:</
code></
dt>
30N/A <
dd>Le(s) langage(s) de la variante, sous la forme d'un symbole de
26N/A langage Internet standard (<
a 26N/A exemple, <
code>en</
code> correspond à l'anglais. Si la variante
2N/A contient plusieurs langages, ils sont séparés par des
26N/A <
dt><
code>Content-Length:</
code></
dt>
2N/A <
dd>La taille du fichier en octets. Si cet en-tête n'est pas
7N/A présent, c'est la taille réelle du fichier qui est utilisée.</
dd>
27N/A <
dt><
code>Content-Type:</
code></
dt>
7N/A Le <
glossary ref="mime-type">type MIME</
glossary> du document
26N/A avec des paramètres optionnels. Les paramètres sont séparés du
26N/A type de médium ainsi qu'entre eux par un point-virgule, et
26N/A possèdent la syntaxe <
code>nom=valeur</
code>. Les paramètres
30N/A <
dt><
code>level</
code></
dt>
26N/A <
dd>un entier spécifiant la version du type de média. Pour
26N/A <
code>
text/
html</
code>, la valeur par défaut est 2, sinon
26N/A <
dt><
code>qs</
code></
dt>
26N/A <
dd>un nombre en virgule flottante de 0[.000] à 1[.000], indiquant la
26N/A "qualité" relative de la variante courante par rapport aux
26N/A autres variantes disponibles, indépendamment des possibilités
26N/A du client. Par exemple, un fichier jpeg est en général une
7N/A source de qualité supérieure à un fichier ascii s'il est censé
26N/A représenter une image. Cependant, si la ressource représentée
26N/A est une image ascii, un fichier ascii possèdera une qualité
26N/A supérieure à un fichier jpeg. Toutes les valeurs de
26N/A <
code>qs</
code> sont donc spécifiques à une certaine
26N/A <
example><
title>Exemple</
title>
26N/A <
dt><
code>URI:</
code></
dt>
26N/A <
dd>l'URI du fichier contenant la variante (du type de médium
26N/A donné, codé selon le codage de contenu donné). Cet URI est
26N/A considéré comme relatif au fichier de correspondances ; il doit
26N/A être situé sur le même serveur, et doit faire référence au
26N/A fichier auquel le client se verrait accorder l'accès s'il était
26N/A requis directement.</
dd>
2N/A <
dt><
code>Body:</
code></
dt>
26N/A <
dd>Le contenu réel de la ressource
30N/A peut être inclus dans la table de correspondances en utilisant
26N/A l'en-tête Body. Cet en-tête doit contenir une chaîne désignant un
26N/A délimiteur pour le contenu du corps. Les lignes suivantes du
26N/A fichier de correspondances de types seront alors considérées comme
26N/A parties du corps de la ressource jusqu'à ce que le délimiteur soit
26N/A détecté.
26N/A <
example><
title>Exemple:</
title>
26N/A Body:----xyz----<
br />
26N/A <p>Contenu de la page.</p><
br />
30N/A </body><
br />
26N/A </html><
br />
26N/A en anglais, en français et en allemand. Les fichiers correspondants
26N/A fichier de correspondances de types se nommera
26N/A Content-language: en<
br />
26N/A Content-language: fr<
br />
26N/A Content-language: de<
br />
26N/A <
p>Ces quatre fichiers doivent se trouver dans le même répertoire,
26N/A et le fichier <
code>.var</
code> doit être associé au gestionnaire
<
code>type-map</
code> via une directive <
directive module="mod_mime">AddHandler</
directive> :</
p>
<
highlight language="config">
<
p>A l'arrivée d'une requête pour la ressource
<
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 <
directive module="mod_mime">MultiviewsMatch</
directive> est définie à
"handlers" ou "any", une requête pour <
code>
document.html</
code> va
négociation avec le gestionnaire explicite type-map.</
p>
<
p>D'autres directives de configuration, comme <
directive module="mod_alias">Alias</
directive>, peuvent être utilisées pour
<
section id="multiviews"><
title>Multivues</
title>
<
p>Une recherche Multivues est activée par l'<
directive module="core">Options</
directive> <
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
<
p>La directive <
directive module="mod_mime">MultiviewsMatch</
directive> 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>
<
name>CacheNegotiatedDocs</
name>
<
description>Permet la mise en cache au niveau des serveurs mandataires
des documents dont le contenu a été négocié</
description>
<
syntax>CacheNegotiatedDocs On|Off</
syntax>
<
default>CacheNegotiatedDocs Off</
default>
<
contextlist><
context>server config</
context><
context>virtual host</
context>
<
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
<
name>ForceLanguagePriority</
name>
<
description>Action à entreprendre si un document acceptable unique
n'est pas trouvé</
description>
<
syntax>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</
syntax>
<
default>ForceLanguagePriority Prefer</
default>
<
contextlist><
context>server config</
context><
context>virtual host</
context>
<
context>directory</
context><
context>.htaccess</
context></
contextlist>
<
override>FileInfo</
override>
<
p>La directive <
directive>ForceLanguagePriority</
directive> utilise
le langage défini par la directive <
directive module="mod_negotiation">LanguagePriority</
directive> 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
<
highlight language="config">
LanguagePriority en fr de
ForceLanguagePriority Prefer
<
p><
code>ForceLanguagePriority Fallback</
code> utilise la directive
<
directive module="mod_negotiation">LanguagePriority</
directive>
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 <
directive module="mod_negotiation" >LanguagePriority</
directive> qui sera servie.</
p>
<
highlight language="config">
LanguagePriority en fr de
ForceLanguagePriority Fallback
<
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
<
directive module="mod_negotiation">LanguagePriority</
directive> 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>
<
seealso><
directive module="mod_mime">AddLanguage</
directive></
seealso>
<
name>LanguagePriority</
name>
<
description>L'ordre de priorité des variantes de langages pour les
cas où le client n'a pas formulé de préférences</
description>
<
syntax>LanguagePriority <
var>langage-MIME</
var> [<
var>langage-MIME</
var>]
<
contextlist><
context>server config</
context><
context>virtual host</
context>
<
context>directory</
context><
context>.htaccess</
context></
contextlist>
<
override>FileInfo</
override>
<
p>La directive <
directive>LanguagePriority</
directive> 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>
<
highlight language="config">
LanguagePriority en fr de
<
p>Dans le cas d'une requête pour <
code>
foo.html</
code>, si
le client n'a pas formulé de préférences, c'est le fichier
<
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 <
directive module="mod_negotiation">ForceLanguagePriority</
directive> 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>
<
seealso><
directive module="mod_mime">AddLanguage</
directive></
seealso>