mirror of
https://github.com/apache/httpd.git
synced 2025-07-10 08:01:00 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1750216 13f79535-47bb-0310-9956-ffa450edef68
352 lines
15 KiB
Plaintext
352 lines
15 KiB
Plaintext
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
|
|
<!-- English Revision : 1749828 -->
|
|
<!-- French translation : Lucien GENTIS -->
|
|
<!-- Reviewed by : Vincent Deffontaines -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_negotiation.xml.meta">
|
|
|
|
<name>mod_negotiation</name>
|
|
<description>Effectue la <a
|
|
href="../content-negotiation.html">négociation de
|
|
contenu</a></description>
|
|
<status>Base</status>
|
|
<sourcefile>mod_negotiation.c</sourcefile>
|
|
<identifier>negotiation_module</identifier>
|
|
|
|
<summary>
|
|
<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'<directive
|
|
module="core">Options</directive> <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>
|
|
</summary>
|
|
<seealso><directive module="core">Options</directive></seealso>
|
|
<seealso><module>mod_mime</module></seealso>
|
|
<seealso><a href="../content-negotiation.html">Négociation de
|
|
contenu</a></seealso>
|
|
<seealso><a href="../env.html">Variables d'environnement</a></seealso>
|
|
|
|
<section id="typemaps"><title>Tables de correspondances de types</title>
|
|
<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 <directive
|
|
module="mod_mime">AddEncoding</directive>. 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 <glossary ref="mime-type">type MIME</glossary> 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>
|
|
|
|
<example><title>Exemple</title>
|
|
Content-Type: image/jpeg; qs=0.8
|
|
</example>
|
|
</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é.
|
|
|
|
<example><title>Exemple:</title>
|
|
Body:----xyz----<br />
|
|
<html><br />
|
|
<body><br />
|
|
<p>Contenu de la page.</p><br />
|
|
</body><br />
|
|
</html><br />
|
|
----xyz----
|
|
</example>
|
|
</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>
|
|
|
|
<example>
|
|
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 />
|
|
|
|
</example>
|
|
|
|
<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 <directive
|
|
module="mod_mime">AddHandler</directive> :</p>
|
|
|
|
<highlight language="config">
|
|
AddHandler type-map .var
|
|
</highlight>
|
|
|
|
<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 <directive
|
|
module="mod_mime">MultiviewsMatch</directive> 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 <directive
|
|
module="mod_alias">Alias</directive>, peuvent être utilisées pour
|
|
associer <code>document.html</code> avec
|
|
<code>document.html.var</code>.</p>
|
|
</section>
|
|
|
|
<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
|
|
le document.</p>
|
|
|
|
<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>
|
|
</section>
|
|
|
|
<directivesynopsis>
|
|
<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>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<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>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<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>
|
|
|
|
<usage>
|
|
<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
|
|
servie.</p>
|
|
|
|
<highlight language="config">
|
|
LanguagePriority en fr de
|
|
ForceLanguagePriority Prefer
|
|
</highlight>
|
|
|
|
<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
|
|
</highlight>
|
|
|
|
<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>
|
|
</usage>
|
|
<seealso><directive module="mod_mime">AddLanguage</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<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>]
|
|
...</syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context></contextlist>
|
|
<override>FileInfo</override>
|
|
|
|
<usage>
|
|
<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
|
|
</highlight>
|
|
|
|
<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 <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>
|
|
</usage>
|
|
<seealso><directive module="mod_mime">AddLanguage</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|