<p><code>MultiViews</code> est une option qui s'applique α un rΘpertoire,
ce qui signifie qu'elle peut Ωtre activΘe α l'aide d'une directive
<code class="directive"><a href="./mod/core.html#options">Options</a></code> α l'intΘrieur d'une section
<code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, <code class="directive"><a href="./mod/core.html#location"><Location></a></code> ou <code class="directive"><a href="./mod/core.html#files"><Files></a></code> dans
<code>httpd.conf</code>, ou (si <code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> est correctement positionnΘe) dans
des fichiers
<code>.htaccess</code>. Notez que <code>Options All</code>
n'active pas <code>MultiViews</code>; vous devez activer cette option en
la nommant explicitement.</p>
<p>L'effet de <code>MultiViews</code> est le suivant : si le serveur reτoit
une requΩte pour <code>/tel/rΘpertoire/foo</code>, si
<code>MultiViews</code> est activΘe pour
<code>/tel/rΘpertoire</code>, et si
<code>/tel/rΘpertoire/foo</code> n'existe <em>pas</em>, le serveur parcourt
le rΘpertoire α la recherche de fichiers nommΘs foo.*, et gΘnΦre
une correspondance de types (type map) qui liste tous ces
fichiers, en leur associant les mΩmes types de mΘdia et encodages de
contenu qu'ils auraient eu si le client avait demandΘ l'accΦs α l'un
d'entre eux par son nom. Il choisit ensuite ce qui correspond le mieux
aux besoins du client.</p>
<p><code>MultiViews</code> peut aussi s'appliquer α la recherche du fichier
nommΘ par la directive <code class="directive"><a href="./mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>, si le serveur tente d'indexer
un rΘpertoire. Si les fichiers de configuration spΘcifient</p>
<p>le serveur va choisir entre <code>index.html</code>
et <code>index.html3</code> si les deux fichiers sont prΘsents. Si aucun
n'est prΘsent, mais <code>index.cgi</code> existe,
le serveur l'exΘcutera.</p>
<p>Si, parcequ'elle n'est pas reconnue par <code>mod_mime</code>,
l'extension d'un des fichiers du rΘpertoire ne permet pas de
dΘterminer son jeu de caractΦres, son type de contenu, son langage, ou son
encodage, alors
le rΘsultat dΘpendra de la dΘfinition de la directive <code class="directive"><a href="./mod/mod_mime.html#multiviewsmatch">MultiViewsMatch</a></code>. Cette directive dΘtermine
si les gestionnaires (handlers), les filtres, et autres types d'extensions
peuvent participer α la nΘgociation MultiVues.</p>
<p>Les types explicites n'ont pas de facteur de qualitΘ, la valeur par
dΘfaut de leur prΘfΘrence est donc de 1.0 (la plus haute). Le type avec
caractΦres gΘnΘriques */* se voit attribuer une prΘfΘrence basse de 0.01,
si bien que les types autres que ceux explicitement listΘs ne seront retournΘs
que s'il n'existe pas de variante correspondant α un type explicitement
listΘ.</p>
<p>Si l'en-tΩte <code>Accept:</code> ne contient <em>pas</em> aucun
facteur de qualitΘ, Apache positionne la valeur de qualitΘ de
"*/*", si present, α 0.01 pour simuler l'effet dΘsirΘ. Il positionne aussi
la valeur de qualitΘ des types avec caractΦres gΘnΘriques au format
"type/*" α 0.02 (ils sont donc prΘfΘrΘs α ceux correspondant α "*/*"). Si
un type de mΘdia dans l'en-tΩte <code>Accept:</code> contient un facteur de
qualitΘ, ces valeurs spΘciales ne seront <em>pas</em> appliquΘes, de faτon
α ce que les requΩtes de navigateurs qui envoient les informations
explicites α prendre en compte fonctionnent comme souhaitΘ.</p>
<h3><a name="exceptions" id="exceptions">Exceptions dans la nΘgociation du
langage</a></h3>
<p>A partir de la version 2.0 d'Apache, certaines exceptions ont ΘtΘ
ajoutΘes α l'algorithme de nΘgociation afin de mΘnager une issue de secours
quand la nΘgociation ne trouve aucun langage correspondant.</p>
<p>Quand un client demande une page sur votre serveur, si ce dernier ne
parvient pas α trouver une page dont la langue corresponde α l'en-tΩte
<code>Accept-language</code> envoyΘ par le navigateur, il enverra au client
une rΘponse "Aucune variante acceptable" ou "Plusieurs choix possibles".
Pour Θviter ces
messages d'erreur, il est possible de configurer Apache de faτon α ce que,
dans ces cas, il ignore l'en-tΩte <code>Accept-language</code> et fournisse
tout de mΩme un document, mΩme s'il ne correspond pas exactement α la
demande explicite du client. La directive <code class="directive"><a href="./mod/mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></code>
peut Ωtre utilisΘe pour Θviter ces messages d'erreur et leur substituer une
page dont le langage sera dΘterminΘ en fonction du contenu de la directive
<p>Le serveur va aussi essayer d'Θtendre sa recherche de correspondance aux
sous-ensembles de langages quand aucune correspondance exacte ne peut Ωtre
trouvΘe. Par exemple, si un client demande des documents possΘdant le
langage <code>en-GB</code>, c'est α dire anglais britannique, le standard
HTTP/1.1 n'autorise normalement pas le serveur α faire correspondre cette
demande α un document dont le langage est simplement <code>en</code>.
(Notez qu'inclure <code>en-GB</code> et non <code>en</code> dans l'en-tΩte
<code>Accept-Language</code> constitue une quasi-erreur de configuration,
car il est trΦs peu probable qu'un lecteur qui comprend l'anglais
britannique, ne comprenne pas l'anglais en gΘnΘral. Malheureusement, de
nombreux clients ont rΘellement des configurations par dΘfaut de ce type.)
Cependant, si aucune autre correspondance de langage n'est possible, et que le
serveur est sur le point de retourner une erreur "Aucune variable
acceptable" ou de choisir le langage dΘfini par la directive <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code>, le serveur ignorera
la spΘcification du sous-ensemble de langage et associera la demande en
<code>en-GB</code> α des documents en <code>en</code>. Implicitement,
Apache ajoute le langage parent α la liste de langues acceptΘes par le
client avec une valeur de qualitΘ trΦs basse. Notez cependant que si le
client demande "en-GB; q=0.9, fr; q=0.8", et le serveur dispose de
documents estampillΘs "en" et "fr", alors c'est le document "fr" qui sera
retournΘ, tout ceci dans un souci de compatibilitΘ avec la spΘcification
HTTP/1.1 et afin de fonctionner efficacement avec les clients
correctement configurΘs.</p>
<p>Pour supporter les techniques avancΘes (comme les cookies ou les chemins
d'URL spΘciaux) afin de dΘterminer le langage prΘfΘrΘ de l'utilisateur, le
module <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> reconnaεt la
<a href="env.html">variable d'environnement</a>
<code>prefer-language</code>
depuis la version 2.0.47 d'Apache. Si elle est dΘfinie et contient un
symbole de langage appropriΘ, <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> va essayer
de sΘlectionner une variante correspondante. S'il n'existe pas de telle
variante, le processus normal de nΘgociation sera lancΘ.</p>
<h2><a name="caching" id="caching">Remarque sur la mise en cache</a></h2>
<p>Quand un cache stocke une reprΘsentation, il l'associe avec l'URL de la
requΩte. Lorsque cette URL est α nouveau demandΘe, le cache peut utiliser
la reprΘsentation stockΘe. Cependant, si la ressource est nΘgociable au
niveau du serveur, il se peut que seule la premiΦre variante demandΘe soit
mise en cache et de ce fait, la correspondance positive du cache peut
entraεner une rΘponse inappropriΘe. Pour Θviter ceci, Apache marque par
dΘfaut toutes les rΘponses qui sont retournΘes aprΦs une nΘgociation de
contenu comme "non-cachables" par les clients HTTP/1.0. Apache supporte
aussi les fonctionnalitΘs du protocole HTTP/1.1 afin de permettre la mise
en cache des rΘponses nΘgociΘes.</p>
<p>Pour les requΩtes en provenance d'un client compatible HTTP/1.0
(un navigateur ou un cache), la directive <code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code> peut Ωtre utilisΘe
pour permettre la mise en cache des rΘponses qui ont fait l'objet d'une
nΘgociation. Cette directive peut intervenir dans la configuration au
niveau du serveur ou de l'h├┤te virtuel, et n'accepte aucun argument. Elle
n'a aucun effet sur les requΩtes en provenance de clients HTTP/1.1.</p>
<p>Pour les clients HTTP/1.1, Apache envoie un en-tΩte de rΘponse HTTP
<code>Vary</code> afin d'indiquer les dimensions de la nΘgociation pour
cette rΘponse. Les caches peuvent
utiliser cette information afin de dΘterminer
si une requΩte peut Ωtre servie α partir de la copie locale. Pour inciter
un cache α utiliser la copie locale sans tenir compte des dimensions de la
<a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div><div id="footer">
<p class="apache">Copyright 2007 The Apache Software Foundation.<br />AuthorisΘ sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>