Serveur Apache HTTP Version 2.4
Description: | Effectue la n�gociation de contenu |
---|---|
Statut: | Base |
Identificateur�de�Module: | negotiation_module |
Fichier�Source: | mod_negotiation.c |
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.
type-map
) qui contient une liste
explicite des fichiers contenant les diff�rentes variantes.Options
Multiviews
), o� le
serveur effectue une recherche de correspondance de mod�le de nom
de fichier implicite, et fait son choix parmi les r�sultats.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 :
Content-Encoding:
AddEncoding
. Sont normalement inclus
les codages x-compress
pour les fichiers compress�s
avec compress, et x-gzip
pour les fichiers compress�s
avec gzip. Le pr�fixe x-
est ignor� lors des
comparaisons de codages.Content-Language:
en
correspond � l'anglais. Si la variante
contient plusieurs langages, ils sont s�par�s par des
virgules.Content-Length:
Content-Type:
nom=valeur
. Les param�tres
courants sont :
level
text/html
, la valeur par d�faut est 2, sinon
0.qs
qs
sont donc sp�cifiques � une certaine
ressource.
Content-Type: image/jpeg; qs=0.8
URI:
Body:
Body:----xyz----
<html>
<body>
<p>Contenu de la page.</p>
</body>
</html>
----xyz----
Consid�rons une ressource, document.html
, disponible
en anglais, en fran�ais et en allemand. Les fichiers correspondants
se nomment respectivement document.html.en
,
document.html.fr
, et document.html.de
. Le
fichier de correspondances de types se nommera
document.html.var
et contiendra ce qui suit :
URI: document.html
Content-language: en
Content-type: text/html
URI: document.html.en
Content-language: fr
Content-type: text/html
URI: document.html.fr
Content-language: de
Content-type: text/html
URI: document.html.de
Ces quatre fichiers doivent se trouver dans le m�me r�pertoire,
et le fichier .var
doit �tre associ� au gestionnaire
type-map
via une directive AddHandler
:
AddHandler type-map .var
A l'arriv�e d'une requ�te pour la ressource
document.html.var
, la variante de
document.html
qui correspond le mieux � la pr�ference
de langage sp�cifi�e dans l'en-t�te de la requ�te de l'utilisateur
Accept-Language
sera choisie.
Si Multiviews
est activ�e, et si MultiviewsMatch
est d�finie �
"handlers" ou "any", une requ�te pour document.html
va
rechercher document.html.var
, et continuer la
n�gociation avec le gestionnaire explicite type-map.
D'autres directives de configuration, comme Alias
, peuvent �tre utilis�es pour
associer document.html
avec
document.html.var
.
Une recherche Multivues est activ�e par l'Options
Multiviews
. Si le
serveur re�oit une requ�te pour /un/r�pertoire/foo
, et
si /un/r�pertoire/foo
n'existe pas, le serveur parcourt
le r�pertoire � la recherche de tous les fichiers de nom
foo.*
, 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.
La directive MultiviewsMatch
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.
Description: | Permet la mise en cache au niveau des serveurs mandataires des documents dont le contenu a �t� n�goci� |
---|---|
Syntaxe: | CacheNegotiatedDocs On|Off |
D�faut: | CacheNegotiatedDocs Off |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Base |
Module: | mod_negotiation |
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.
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.
Description: | Action � entreprendre si un document acceptable unique n'est pas trouv� |
---|---|
Syntaxe: | ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback] |
D�faut: | ForceLanguagePriority Prefer |
Contexte: | configuration du serveur, serveur virtuel, r�pertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_negotiation |
La directive ForceLanguagePriority
utilise
le langage d�fini par la directive LanguagePriority
pour terminer
la n�gociation lorsque le serveur n'est pas en mesure de trouver une
solution satisfaisante unique.
ForceLanguagePriority Prefer
utilise la directive
LanguagePriority
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
Accept-Language
de l'utilisateur assigne �
en
et de
une qualit� de .500
(les deux langages sont �galement acceptables), alors c'est la
premi�re variante acceptable de langue en
qui sera
servie.
LanguagePriority en fr de ForceLanguagePriority Prefer
ForceLanguagePriority Fallback
utilise la directive
LanguagePriority
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 Accept-Language
de l'utilisateur ne mentionne
que les r�ponses de langage es
, 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 LanguagePriority
qui sera servie.
LanguagePriority en fr de ForceLanguagePriority Fallback
Les deux options, Prefer
et Fallback
,
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
LanguagePriority
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.
Description: | L'ordre de priorit� des variantes de langages pour les cas o� le client n'a pas formul� de pr�f�rences |
---|---|
Syntaxe: | LanguagePriority langage-MIME [langage-MIME]
... |
Contexte: | configuration du serveur, serveur virtuel, r�pertoire, .htaccess |
AllowOverride: | FileInfo |
Statut: | Base |
Module: | mod_negotiation |
La directive LanguagePriority
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
langages-MIME dans un ordre de pr�f�rences
d�croissantes.
LanguagePriority en fr de
Dans le cas d'une requ�te pour foo.html
, si
foo.html.fr
et foo.html.de
existent, et si
le client n'a pas formul� de pr�f�rences, c'est le fichier
foo.html.fr
qui sera renvoy�.
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 ForceLanguagePriority
est
diff�rente de None
. En g�n�ral, c'est le client qui
d�termine le langage pr�f�r�, non le serveur.