home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / apache_2.2.8-win32-x86-no_ssl.msi / Data1.cab / _298B5DD2A576654877FF634EE0A49B16 < prev    next >
Extensible Markup Language  |  2007-11-14  |  37KB  |  705 lines

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
  4.         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  5.               This file is generated from xml source: DO NOT EDIT
  6.         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  7.       -->
  8. <title>NΘgociation de contenu - Serveur Apache HTTP</title>
  9. <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
  10. <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
  11. <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
  12. <link href="./images/favicon.ico" rel="shortcut icon" /></head>
  13. <body id="manual-page"><div id="page-header">
  14. <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
  15. <p class="apache">Serveur Apache HTTP Version 2.2</p>
  16. <img alt="" src="./images/feather.gif" /></div>
  17. <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
  18. <div id="path">
  19. <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.2</a></div><div id="page-content"><div id="preamble"><h1>NΘgociation de contenu</h1>
  20. <div class="toplang">
  21. <p><span>Langues Disponibles: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> |
  22. <a href="./fr/content-negotiation.html" title="Franτais"> fr </a> |
  23. <a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
  24. <a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
  25. </div>
  26.  
  27.  
  28.     <p>Apache supporte la nΘgociation de contenu telle qu'elle est dΘcrite
  29.     dans la spΘcification HTTP/1.1. Il peut choisir la meilleure reprΘsentation
  30.     d'une ressource en fonction des prΘfΘrences du navigateur pour ce qui
  31.     concerne le type de media, les langages, le jeu de caractΦres et son
  32.     encodage. Il implΘmente aussi quelques fonctionnalitΘs pour traiter de
  33.     maniΦre plus intelligente les requΩtes en provenance de navigateurs qui
  34.     envoient des informations de nΘgociation incomplΦtes.</p>
  35.  
  36.     <p>La nΘgociation de contenu est assurΘe par le module
  37.     <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> qui est compilΘ par dΘfaut
  38.     dans le serveur.</p>
  39. </div>
  40. <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#about">└ propos de la nΘgociation de contenu</a></li>
  41. <li><img alt="" src="./images/down.gif" /> <a href="#negotiation">La nΘgociation avec Apache</a></li>
  42. <li><img alt="" src="./images/down.gif" /> <a href="#methods">Les mΘthodes de nΘgociation</a></li>
  43. <li><img alt="" src="./images/down.gif" /> <a href="#better">Ajustement des valeurs de qualitΘ</a></li>
  44. <li><img alt="" src="./images/down.gif" /> <a href="#extensions">Extensions α la nΘgociation de contenu
  45. transparente</a></li>
  46. <li><img alt="" src="./images/down.gif" /> <a href="#naming">Remarques α propos des liens hypertextes et des
  47. conventions de nommage</a></li>
  48. <li><img alt="" src="./images/down.gif" /> <a href="#caching">Remarque sur la mise en cache</a></li>
  49. <li><img alt="" src="./images/down.gif" /> <a href="#more">Pour plus d'informations</a></li>
  50. </ul></div>
  51. <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  52. <div class="section">
  53. <h2><a name="about" id="about">└ propos de la nΘgociation de contenu</a></h2>
  54.  
  55.     <p>Une ressource peut Ωtre disponible selon diffΘrentes reprΘsentations.
  56.     Par exemple, elle peut Ωtre disponible en diffΘrents langages ou pour
  57.     diffΘrents types de mΘdia, ou une combinaison des deux.
  58.     Pour faire le meilleur choix, on peut fournir α l'utilisateur une page
  59.     d'index, et le laisser choisir. Cependant, le serveur peut souvent faire
  60.     ce choix automatiquement. Ceci est possible car les navigateurs peuvent
  61.     envoyer des informations sur les
  62.     reprΘsentations qu'ils prΘfΦrent α l'intΘrieur de chaque requΩte.
  63.     Par exemple, un navigateur peut indiquer
  64.     qu'il prΘfΦre voir les informations en franτais, mais qu'en cas
  65.     d'impossibilitΘ l'anglais peut convenir. Les navigateurs indiquent leurs
  66.     prΘfΘrences α l'aide d'en-tΩtes dans la requΩte. Pour ne demander que des
  67.     reprΘsentations en franτais, le navigateur peut utiliser l'en-tΩte :</p>
  68.  
  69. <div class="example"><p><code>Accept-Language: fr</code></p></div>
  70.  
  71.     <p>Notez qu'il ne sera tenu compte de cette prΘfΘrence que s'il existe un
  72.     choix de reprΘsentations et que ces derniΦres varient en fonction
  73.     du langage.</p>
  74.  
  75.     <p>└ titre d'exemple d'une requΩte plus complexe, ce navigateur a ΘtΘ
  76.     configurΘ pour accepter le franτais et l'anglais, avec une prΘfΘrence pour
  77.     le franτais, et accepter diffΘrents types de mΘdia, avec une prΘfΘrence
  78.     pour HTML par rapport au texte plat (plain text) ou autres types de fichiers texte, et
  79.     avec une prΘfΘrence pour GIF ou JPEG par rapport α tout autre type de
  80.     mΘdia, mais autorisant tout autre type de mΘdia en dernier ressort :</p>
  81.  
  82. <div class="example"><p><code>
  83.   Accept-Language: fr; q=1.0, en; q=0.5<br />
  84.   Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1
  85. </code></p></div>
  86.  
  87.     <p>Apache supporte la nΘgociation de contenu "server driven" (telle qu'elle
  88.     est dΘfinie dans la spΘcification HTTP/1.1), o∙ c'est le serveur qui
  89.     dΘcide quelle est la meilleure reprΘsentation α retourner pour la ressource
  90.     demandΘe. Il supporte entiΦrement les en-tΩtes de requΩte
  91.     <code>Accept</code>, <code>Accept-Language</code>,
  92.     <code>Accept-Charset</code> et <code>Accept-Encoding</code>.
  93.     Apache supporte aussi la nΘgociation de contenu transparente, qui est un
  94.     protocole de nΘgociation expΘrimental dΘfini dans les RFC 2295 et 2296.
  95.     Il ne supporte pas la nΘgociation de fonctionnalitΘ (feature negotiation)
  96.     telle qu'elle est dΘfinie dans ces RFCs.</p>
  97.  
  98.     <p>Une <strong>ressource</strong> est une entitΘ conceptuelle identifiΘe
  99.     par une URI (RFC 2396). Un serveur HTTP comme Apache propose l'accΦs α des
  100.     <strong>reprΘsentations</strong> de la ressource α l'intΘrieur de son
  101.     espace de nommage, chaque reprΘsentation Θtant composΘe d'une sΘquence
  102.     d'octets avec la dΘfinition d'un type de media, d'un jeu de caractΦres,
  103.     d'un encodage, etc... A un instant donnΘ, chaque ressource peut Ωtre
  104.     associΘe avec zΘro, une ou plusieurs reprΘsentations. Si plusieurs
  105.     reprΘsentations sont disponibles, la ressource est qualifiΘe de
  106.     <strong>nΘgociable</strong> et chacune de ses reprΘsentations se nomme
  107.     <strong>variante</strong>. Les diffΘrences entre les
  108.     variantes disponibles d'une ressource nΘgociable constituent les
  109.     <strong>dimensions</strong> de la nΘgociation.</p>
  110. </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  111. <div class="section">
  112. <h2><a name="negotiation" id="negotiation">La nΘgociation avec Apache</a></h2>
  113.  
  114.     <p>Afin de nΘgocier une ressource, on doit fournir au serveur des
  115.     informations α propos de chacune des variantes. Il y a deux maniΦres
  116.     d'accomplir ceci :</p>
  117.  
  118.     <ul>
  119.       <li>Utiliser une liste de correspondances de types ("type-map") (<em>c'est α dire</em>
  120.       un fichier <code>*.var</code>) qui nomme explicitement les fichiers
  121.       contenant les variantes, ou</li>
  122.  
  123.       <li>Utiliser une recherche "multivues", o∙ le serveur effectue une
  124.       recherche de correspondance sur un motif de nom de fichier implicite et
  125.       fait son choix parmi les diffΘrents rΘsultats.</li>
  126.     </ul>
  127.  
  128.    <h3><a name="type-map" id="type-map">Utilisation d'un fichier de
  129.    correspondances de types (type-map)</a></h3>
  130.  
  131.     <p>Une liste de correspondances de types est un document associΘ au
  132.     gestionnaire <code>type-map</code> (ou, dans un souci de compatibilitΘ
  133.     ascendante avec des configurations d'Apache plus anciennes, le
  134.     <a class="glossarylink" href="./glossary.html#type mime" title="see glossary">type MIME</a>
  135.     <code>application/x-type-map</code>). Notez que pour utiliser cette
  136.     fonctionnalitΘ, vous devez, dans le fichier de configuration, dΘfinir un
  137.     gestionnaire qui associe un suffixe de fichier α une <code>type-map</code>;
  138.     ce qui se fait simplement en ajoutant</p>
  139.  
  140. <div class="example"><p><code>AddHandler type-map .var</code></p></div>
  141.  
  142.     <p>dans le fichier de configuration du serveur.</p>
  143.  
  144.     <p>Les fichiers de correspondances de types doivent possΘder le mΩme nom que
  145.     la ressource qu'ils dΘcrivent, et comporter une entrΘe pour chaque variante
  146.     disponible; chaque entrΘe consiste en une ligne contiguδ d'en-tΩtes au
  147.     format HTTP. les entrΘes sont sΘparΘes par des lignes vides. Les lignes
  148.     vides α l'intΘrieur d'une entrΘe sont interdites. Par convention, le
  149.     fichier de correspondances dΘbute par une entrΘe concernant l'entitΘ
  150.     considΘrΘe dans son ensemble (bien que ce ne soit pas obligatoire, et
  151.     ignorΘ si prΘsent). Un exemple de fichier de correspondance est fourni
  152.     ci-dessous.
  153.     Ce fichier doit Ωtre nommΘ <code>foo.var</code>, car il dΘcrit une
  154.     ressource nommΘe <code>foo</code>.</p>
  155.  
  156. <div class="example"><p><code>
  157.   URI: foo<br />
  158. <br />
  159.   URI: foo.en.html<br />
  160.   Content-type: text/html<br />
  161.   Content-language: en<br />
  162. <br />
  163.   URI: foo.fr.de.html<br />
  164.   Content-type: text/html;charset=iso-8859-2<br />
  165.   Content-language: fr, de<br />
  166. </code></p></div>
  167.     <p>Notez aussi qu'un fichier de correspondances de types prend le pas sur
  168.     les extensions de noms de fichiers, mΩme si les Multivues sont activΘes.
  169.     Si les variantes sont de qualitΘs diffΘrentes, on doit l'indiquer
  170.     α l'aide du paramΦtre "qs" α la suite du type de mΘdia, comme pour cette
  171.     image
  172.     (disponible aux formats JPEG, GIF, ou ASCII-art) : </p>
  173.  
  174. <div class="example"><p><code>
  175.   URI: foo<br />
  176. <br />
  177.   URI: foo.jpeg<br />
  178.   Content-type: image/jpeg; qs=0.8<br />
  179. <br />
  180.   URI: foo.gif<br />
  181.   Content-type: image/gif; qs=0.5<br />
  182. <br />
  183.   URI: foo.txt<br />
  184.   Content-type: text/plain; qs=0.01<br />
  185. </code></p></div>
  186.  
  187.     <p>Les valeurs de qs peuvent varier de 0.000 α 1.000. Notez que toute
  188.     variante possΘdant une valeur de qs de 0.000 ne sera jamais choisie.
  189.     Les variantes qui n'ont pas de paramΦtre qs dΘfini se voient attribuer
  190.     une valeur de 1.0. Le paramΦtre qs indique la qualitΘ relative de la
  191.     variante comparΘe α celle des autres variantes disponibles, sans tenir
  192.     compte des capacitΘs du client. Par exemple, un fichier JPEG possΦde
  193.     en gΘnΘral une qualitΘ supΘrieure α celle d'un fichier ASCII s'il
  194.     reprΘsente une photographie. Cependant, si la ressource reprΘsentΘe est
  195.     α un ASCII art original, la reprΘsentation ASCII sera de meilleure qualitΘ
  196.     que la reprΘsentation JPEG. Ainsi une valeur de qs est associΘe α une
  197.     variante en fonction de la nature de la ressource qu'elle reprΘsente.</p>
  198.  
  199.     <p>La liste complΦte des en-tΩtes reconnus est disponible dans la
  200.     documentation de la directive <a href="mod/mod_negotiation.html#typemaps">
  201.     typemap</a> (module mod_negotiation).</p>
  202.  
  203.  
  204. <h3><a name="multiviews" id="multiviews">Multivues (option Multiviews)</a></h3>
  205.  
  206.     <p><code>MultiViews</code> est une option qui s'applique α un rΘpertoire,
  207.     ce qui signifie qu'elle peut Ωtre activΘe α l'aide d'une directive
  208.     <code class="directive"><a href="./mod/core.html#options">Options</a></code> α l'intΘrieur d'une section
  209.     <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
  210.     <code>httpd.conf</code>, ou (si <code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> est correctement positionnΘe) dans
  211.     des fichiers
  212.     <code>.htaccess</code>. Notez que <code>Options All</code>
  213.     n'active pas <code>MultiViews</code>; vous devez activer cette option en
  214.     la nommant explicitement.</p>
  215.  
  216.     <p>L'effet de <code>MultiViews</code> est le suivant : si le serveur reτoit
  217.     une requΩte pour <code>/tel/rΘpertoire/foo</code>, si
  218.     <code>MultiViews</code> est activΘe pour
  219.     <code>/tel/rΘpertoire</code>, et si
  220.     <code>/tel/rΘpertoire/foo</code> n'existe <em>pas</em>, le serveur parcourt
  221.     le rΘpertoire α la recherche de fichiers nommΘs foo.*, et gΘnΦre
  222.     une correspondance de types (type map) qui liste tous ces
  223.     fichiers, en leur associant les mΩmes types de mΘdia et encodages de
  224.     contenu qu'ils auraient eu si le client avait demandΘ l'accΦs α l'un
  225.     d'entre eux par son nom. Il choisit ensuite ce qui correspond le mieux
  226.     aux besoins du client.</p>
  227.  
  228.     <p><code>MultiViews</code> peut aussi s'appliquer α la recherche du fichier
  229.     nommΘ par la directive <code class="directive"><a href="./mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>, si le serveur tente d'indexer
  230.     un rΘpertoire. Si les fichiers de configuration spΘcifient</p>
  231. <div class="example"><p><code>DirectoryIndex index</code></p></div>
  232.     <p>le serveur va choisir entre <code>index.html</code>
  233.     et <code>index.html3</code> si les deux fichiers sont prΘsents. Si aucun
  234.     n'est prΘsent, mais <code>index.cgi</code> existe,
  235.     le serveur l'exΘcutera.</p>
  236.  
  237.     <p>Si, parcequ'elle n'est pas reconnue par <code>mod_mime</code>,
  238.     l'extension d'un des fichiers du rΘpertoire ne permet pas de
  239.     dΘterminer son jeu de caractΦres, son type de contenu, son langage, ou son
  240.     encodage,  alors
  241.     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
  242.     si les gestionnaires (handlers), les filtres, et autres types d'extensions
  243.     peuvent participer α la nΘgociation MultiVues.</p>
  244.  
  245. </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  246. <div class="section">
  247. <h2><a name="methods" id="methods">Les mΘthodes de nΘgociation</a></h2>
  248.  
  249.     <p>Une fois obtenue la liste des variantes pour une ressource donnΘe,
  250.     Apache dispose de deux mΘthodes pour choisir la meilleure variante α
  251.     retourner, s'il y a lieu, soit α partir d'un fichier de
  252.     correspondances de types, soit en se basant sur les noms de fichiers du
  253.     rΘpertoire. Il n'est pas nΘcessaire de connaεtre en dΘtails comment la
  254.     nΘgociation fonctionne rΘellement pour pouvoir utiliser les fonctionnalitΘs
  255.     de nΘgociation de contenu d'Apache. La suite de ce document explique
  256.     cependant les mΘthodes utilisΘes pour ceux ou celles qui sont
  257.     intΘressΘs(Θes). </p>
  258.  
  259.     <p>Il existe deux mΘthodes de nΘgociation :</p>
  260.  
  261.     <ol>
  262.       <li><strong>La nΘgociation effectuΘe par le serveur selon l'algorithme
  263.       d'Apache</strong> est normalement utilisΘe. l'algorithme d'Apache est
  264.       expliquΘ plus en dΘtails ci-dessous. Quand cet algorithme est utilisΘ,
  265.       Apache peut parfois "bricoler" le facteur de qualitΘ (qs) d'une dimension
  266.       particuliΦre afin d'obtenir un meilleur rΘsultat.
  267.       La maniΦre dont Apache peut modifier les facteurs de qualitΘ est
  268.       expliquΘe plus en dΘtails ci-dessous.</li>
  269.  
  270.       <li><strong>La nΘgociation de contenu transparente</strong> est utilisΘe
  271.       quand le navigateur le demande explicitement selon le mΘcanisme dΘfini
  272.       dans la RFC 2295. Cette mΘthode de nΘgociation donne au navigateur le
  273.       contr├┤le total du choix de la meilleure variante; le rΘsultat dΘpend
  274.       cependant de la spΘcificitΘ des algorithmes utilisΘs par le navigateur.
  275.       Au cours du processus de nΘgociation transparente, le navigateur peut
  276.       demander α Apache d'exΘcuter l'"algorithme de sΘlection de variante α
  277.       distance" dΘfini dans la RFC 2296.</li>
  278.     </ol>
  279.  
  280. <h3><a name="dimensions" id="dimensions">Les dimensions de la nΘgociation</a></h3>
  281.  
  282.     <table>
  283.       
  284.       <tr valign="top">
  285.         <th>Dimension</th>
  286.  
  287.         <th>Notes</th>
  288.       </tr>
  289.  
  290.       <tr valign="top">
  291.         <td>Type de mΘdia</td>
  292.  
  293.         <td>Le navigateur affiche ses prΘfΘrences α l'aide du champ d'en-tΩte
  294.     <code>Accept</code>. Chaque type de mΘdia peut se voir associΘ un facteur de
  295.     qualitΘ. La description de la variante peut aussi avoir un facteur de
  296.     qualitΘ (le paramΦtre "qs").</td>
  297.       </tr>
  298.  
  299.       <tr valign="top">
  300.         <td>Langage</td>
  301.  
  302.         <td>Le navigateur affiche ses prΘfΘrences α l'aide du champ d'en-tΩte
  303.         <code>Accept-Language</code>. Chaque langue peut se voir associΘe un facteur de
  304.     qualitΘ. Les variantes peuvent Ωtre associΘes avec zΘro, un ou
  305.     plusieurs langages.</td>
  306.       </tr>
  307.  
  308.       <tr valign="top">
  309.         <td>Encoding</td>
  310.  
  311.         <td>Le navigateur affiche ses prΘfΘrences α l'aide du champ d'en-tΩte
  312.         <code>Accept-Encoding</code>. Chaque encodage peut se voir associΘ un facteur de
  313.     qualitΘ.</td>
  314.       </tr>
  315.  
  316.       <tr valign="top">
  317.         <td>Charset</td>
  318.  
  319.         <td>Le navigateur affiche ses prΘfΘrences α l'aide du champ d'en-tΩte
  320.         <code>Accept-Charset</code>. Chaque jeu de caractΦres peut se voir associΘ un facteur de
  321.     qualitΘ. Les variantes peuvent prΘciser un jeu de caractΦres comme
  322.     paramΦtre du type de mΘdia.</td>
  323.       </tr>
  324.     </table>
  325.  
  326.  
  327. <h3><a name="algorithm" id="algorithm">L'algorithme de nΘgociation d'Apache</a></h3>
  328.  
  329.     <p>Apache peut utiliser l'algorithme suivant pour choisir la "meilleure"
  330.     variante (s'il y en a une) α retourner au navigateur. Cet algorithme n'est pas
  331.     configurable. Il fonctionne comme suit :</p>
  332.  
  333.     <ol>
  334.       <li>En premier lieu, pour chaque dimension de la nΘgociation, consulter
  335.       le champ d'en-tΩte <em>Accept*</em> appropriΘ et assigner une qualitΘ α
  336.       chaque variante. Si l'en-tΩte <em>Accept*</em> pour toute dimension
  337.       implique que la variante n'est pas acceptable, Θliminer cette derniΦre.
  338.       S'il ne reste plus de variante, aller α l'Θtape 4.</li>
  339.  
  340.       <li>
  341.         Choisir la "meilleure" variante par Θlimination. Chacun des tests
  342.     suivants est effectuΘ dans cet ordre. Toute variante non sΘlectionnΘe
  343.     α l'issue d'un test est ΘliminΘe. AprΦs chaque test, s'il reste une
  344.     seule variante, choisir cette derniΦre comme celle qui correspond le
  345.     mieux puis aller α l'Θtape 3. S'il reste plusieurs variantes, passer
  346.     au test suivant.
  347.  
  348.         <ol>
  349.           <li>Multiplier le facteur de qualitΘ de l'en-tΩte
  350.       <code>Accept</code> par le facteur de qualitΘ "qs" pour le type de
  351.       mΘdia de ces variantes, et choisir la variante qui possΦde la valeur
  352.       la plus importante.</li>
  353.  
  354.           <li>SΘlectionner les variantes qui possΦdent le facteur de qualitΘ
  355.       de langage le plus haut.</li>
  356.  
  357.           <li>SΘlectionner les variantes dont le langage correspond le mieux,
  358.           en se basant sur l'ordre des langages de l'en-tΩte
  359.           <code>Accept-Language</code> (s'il existe), ou de la directive
  360.       <code>LanguagePriority</code> (si elle existe).</li>
  361.  
  362.           <li>SΘlectionner les variantes possΘdant le paramΦtre de mΘdia
  363.       "level" le plus ΘlevΘ (utilisΘ pour prΘciser la version des types de
  364.       mΘdia text/html).</li>
  365.  
  366.           <li>SΘlectionner les variantes possΘdant le paramΦtre de mΘdia
  367.       "charset" (jeu de caractΦres) qui correspond le mieux, en se basant
  368.       sur la ligne d'en-tΩte <code>Accept-Charset</code> . Le jeu de
  369.       caractΦres ISO-8859-1 est acceptable sauf s'il est explicitement
  370.       exclus. Les variantes avec un type de mΘdia <code>text/*</code>
  371.           mais non explicitement associΘes avec un jeu de caractΦres
  372.       particulier sont supposΘes Ωtre en ISO-8859-1.</li>
  373.  
  374.           <li>SΘlectionner les variantes dont le paramΦtre de mΘdia "charset"
  375.       associΘ n'est <em>pas</em> ISO-8859-1. S'il n'en existe pas,
  376.       sΘlectionner toutes les variantes.</li>
  377.  
  378.           <li>SΘlectionner les variantes avec le meilleur encodage. S'il existe
  379.       des variantes avec un encodage acceptable pour le client,
  380.       sΘlectionner celles-ci. Sinon, s'il existe des variantes encodΘes et
  381.       des variantes non encodΘes, ne sΘlectionner que les variantes non
  382.       encodΘes. Si toutes les variantes sont encodΘes ou si aucune
  383.       ne l'est, sΘlectionner toutes les variantes.</li>
  384.  
  385.           <li>SΘlectionner les variantes dont le contenu a la longueur
  386.       la plus courte.</li>
  387.  
  388.           <li>SΘlectionner la premiΦre des variantes restantes. Il s'agira
  389.       soit de la premiΦre variante listΘe dans le fichier de
  390.       correspondances de types, soit, quand les variantes sont lues depuis
  391.       le rΘpertoire, la premiΦre par ordre alphabΘtique quand elles sont
  392.       triΘes selon le code ASCII.</li>
  393.         </ol>
  394.       </li>
  395.  
  396.       <li>L'algorithme a maintenant sΘlectionnΘ une variante considΘrΘe comme
  397.       la "meilleure", il la retourne donc au client en guise de rΘponse.
  398.       L'en-tΩte HTTP <code>Vary</code> de la rΘponse est renseignΘ de faτon α
  399.       indiquer les dimensions de la nΘgociation (les navigateurs et les caches
  400.       peuvent utiliser cette information lors de la mise en cache de la
  401.       ressource). Travail terminΘ.</li>
  402.  
  403.       <li>Le passage par cette Θtape signifie qu'aucune variante n'a ΘtΘ
  404.       sΘlectionnΘe (parce qu'aucune n'est acceptable pour le client HTTP).
  405.       Envoyer une rΘponse avec un code de statut 406 (qui signifie "Aucune
  406.       reprΘsentation acceptable") et un corps comportant un document HTML qui
  407.       affiche les variantes disponibles. Renseigner aussi l'en-tΩte HTTP
  408.       <code>Vary</code> de faτon α indiquer les dimensions de la variante.</li>
  409.     </ol>
  410.  
  411. </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  412. <div class="section">
  413. <h2><a name="better" id="better">Ajustement des valeurs de qualitΘ</a></h2>
  414.  
  415.     <p>Parfois Apache modifie les valeurs de qualitΘ par rapport α celles qui
  416.     dΘcouleraient d'une stricte interprΘtation de l'algorithme de nΘgociation
  417.     d'Apache ci-dessus, ceci pour amΘliorer les rΘsultats de l'algorithme pour
  418.     les navigateurs qui envoient des informations incomplΦtes ou inappropriΘes.
  419.     Certains des navigateurs les plus populaires envoient des informations dans
  420.     l'en-tΩte <code>Accept</code> qui, sans ce traitement, provoqueraient la
  421.     sΘlection d'une variante inappropriΘe dans de nombreux cas. Quand un
  422.     navigateur envoie des informations complΦtes et correctes ces ajustements
  423.     ne sont pas effectuΘs.</p>
  424.  
  425. <h3><a name="wildcards" id="wildcards">Types de mΘdia et caractΦres gΘnΘriques</a></h3>
  426.  
  427.     <p>L'en-tΩte de requΩte <code>Accept:</code> indique les types de mΘdia
  428.     souhaitΘs. Il peut aussi contenir des types de mΘdia avec caractΦres
  429.     gΘnΘriques, comme "image/*" ou "*/*" o∙ * correspond α n'importe quelle
  430.     chaεne de caractΦres. Ainsi une requΩte contenant :</p>
  431.  
  432. <div class="example"><p><code>Accept: image/*, */*</code></p></div>
  433.  
  434.     <p>indiquerait que tout type de mΘdia est acceptable, avec une prΘfΘrence
  435.     pour les types commenτant par "image/".
  436.     Certains navigateurs ajoutent par dΘfaut des types de mΘdia avec caractΦres
  437.     gΘnΘriques aux types explicitement nommΘs qu'ils peuvent gΘrer.
  438.     Par exemple :</p>
  439.  
  440. <div class="example"><p><code>
  441.   Accept: text/html, text/plain, image/gif, image/jpeg, */*
  442. </code></p></div>
  443.     <p>Ceci indique que les types explicitement listΘs sont prΘfΘrΘs, mais
  444.     qu'une reprΘsentation avec un type diffΘrent de ces derniers conviendra
  445.     aussi.  Les valeurs de qualitΘs explicites,
  446.     afin de prΘciser ce que veut vraiment le navigateur, s'utilisent
  447.     comme suit :</p>
  448. <div class="example"><p><code>
  449.   Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
  450. </code></p></div>
  451.     <p>Les types explicites n'ont pas de facteur de qualitΘ, la valeur par
  452.     dΘfaut de leur prΘfΘrence est donc de 1.0 (la plus haute). Le type avec
  453.     caractΦres gΘnΘriques */* se voit attribuer une prΘfΘrence basse de 0.01,
  454.     si bien que les types autres que ceux explicitement listΘs ne seront retournΘs
  455.     que s'il n'existe pas de variante correspondant α un type explicitement
  456.     listΘ.</p>
  457.  
  458.     <p>Si l'en-tΩte <code>Accept:</code> ne contient <em>pas</em> aucun
  459.     facteur de qualitΘ, Apache positionne la valeur de qualitΘ de
  460.     "*/*", si present, α 0.01 pour simuler l'effet dΘsirΘ. Il positionne aussi
  461.     la valeur de qualitΘ des types avec caractΦres gΘnΘriques au format
  462.     "type/*" α 0.02 (ils sont donc prΘfΘrΘs α ceux correspondant α "*/*"). Si
  463.     un type de mΘdia dans l'en-tΩte <code>Accept:</code> contient un facteur de
  464.     qualitΘ, ces valeurs spΘciales ne seront <em>pas</em> appliquΘes, de faτon
  465.     α ce que les requΩtes de navigateurs qui envoient les informations
  466.     explicites α prendre en compte fonctionnent comme souhaitΘ.</p>
  467.  
  468.  
  469. <h3><a name="exceptions" id="exceptions">Exceptions dans la nΘgociation du
  470. langage</a></h3>
  471.  
  472.     <p>A partir de la version 2.0 d'Apache, certaines exceptions ont ΘtΘ
  473.     ajoutΘes α l'algorithme de nΘgociation afin de mΘnager une issue de secours
  474.     quand la nΘgociation ne trouve aucun langage correspondant.</p>
  475.  
  476.     <p>Quand un client demande une page sur votre serveur, si ce dernier ne
  477.     parvient pas α trouver une page dont la langue corresponde α l'en-tΩte
  478.     <code>Accept-language</code> envoyΘ par le navigateur, il enverra au client
  479.     une rΘponse "Aucune variante acceptable" ou "Plusieurs choix possibles".
  480.     Pour Θviter ces
  481.     messages d'erreur, il est possible de configurer Apache de faτon α ce que,
  482.     dans ces cas, il ignore l'en-tΩte <code>Accept-language</code> et fournisse
  483.     tout de mΩme un document, mΩme s'il ne correspond pas exactement α la
  484.     demande explicite du client. La directive <code class="directive"><a href="./mod/mod_negotiation.html#forcelanguagepriority">ForceLanguagePriority</a></code>
  485.     peut Ωtre utilisΘe pour Θviter ces messages d'erreur et leur substituer une
  486.     page dont le langage sera dΘterminΘ en fonction du contenu de la directive
  487.     <code class="directive"><a href="./mod/mod_negotiation.html#languagepriority">LanguagePriority</a></code>.</p>
  488.  
  489.     <p>Le serveur va aussi essayer d'Θtendre sa recherche de correspondance aux
  490.     sous-ensembles de langages quand aucune correspondance exacte ne peut Ωtre
  491.     trouvΘe. Par exemple, si un client demande des documents possΘdant le
  492.     langage <code>en-GB</code>, c'est α dire anglais britannique, le standard
  493.     HTTP/1.1 n'autorise normalement pas le serveur α faire correspondre cette
  494.     demande α un document dont le langage est simplement <code>en</code>.
  495.     (Notez qu'inclure <code>en-GB</code> et non <code>en</code> dans l'en-tΩte
  496.     <code>Accept-Language</code> constitue une quasi-erreur de configuration,
  497.     car il est trΦs peu probable qu'un lecteur qui comprend l'anglais
  498.     britannique, ne comprenne pas l'anglais en gΘnΘral. Malheureusement, de
  499.     nombreux clients ont rΘellement des configurations par dΘfaut de ce type.)
  500.     Cependant, si aucune autre correspondance de langage n'est possible, et que le
  501.     serveur est sur le point de retourner une erreur "Aucune variable
  502.     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
  503.     la spΘcification du sous-ensemble de langage et associera la demande en
  504.     <code>en-GB</code> α des documents en <code>en</code>.  Implicitement,
  505.     Apache ajoute le langage parent α la liste de langues acceptΘes par le
  506.     client avec une valeur de qualitΘ trΦs basse. Notez cependant que si le
  507.     client demande "en-GB; q=0.9, fr; q=0.8", et le serveur dispose de
  508.     documents estampillΘs "en" et "fr", alors c'est le document "fr" qui sera
  509.     retournΘ, tout ceci dans un souci de compatibilitΘ avec la spΘcification
  510.     HTTP/1.1 et afin de fonctionner efficacement avec les clients
  511.     correctement configurΘs.</p>
  512.  
  513.     <p>Pour supporter les techniques avancΘes (comme les cookies ou les chemins
  514.     d'URL spΘciaux) afin de dΘterminer le langage prΘfΘrΘ de l'utilisateur, le
  515.     module <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> reconnaεt la
  516.     <a href="env.html">variable d'environnement</a>
  517.     <code>prefer-language</code>
  518.     depuis la version 2.0.47 d'Apache. Si elle est dΘfinie et contient un
  519.     symbole de langage appropriΘ, <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> va essayer
  520.     de sΘlectionner une variante correspondante. S'il n'existe pas de telle
  521.     variante, le processus normal de nΘgociation sera lancΘ.</p>
  522.  
  523.     <div class="example"><h3>Exemple</h3><p><code>
  524.       SetEnvIf Cookie "language=(.+)" prefer-language=$1
  525.       Header append Vary cookie
  526.     </code></p></div>
  527.  
  528. </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  529. <div class="section">
  530. <h2><a name="extensions" id="extensions">Extensions α la nΘgociation de contenu
  531. transparente</a></h2>
  532.  
  533. <p>Apache Θtend le protocole de nΘgociation de contenu transparente (RFC
  534. 2295) comme suit. Un nouvel ΘlΘment <code>{encodage ..}</code> est utilisΘ dans
  535. les listes de variantes pour marquer celles qui ne sont disponibles qu'avec un
  536. encodage de contenu spΘcifique. L'implΘmentation de l'algorithme
  537. RVSA/1.0 (RFC 2296) est Θtendue α la reconnaissance de variantes encodΘes dans
  538. la liste, et α leur utilisation en tant que variantes candidates α partir du
  539. moment o∙ leur encodage satisfait au contenu de l'en-tΩte de requΩte
  540. <code>Accept-Encoding</code>. L'implΘmentation RVSA/1.0 n'arrondit pas les
  541. facteurs de qualitΘ calculΘs α 5 dΘcimales avant d'avoir choisi la meilleure
  542. variante.</p>
  543. </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  544. <div class="section">
  545. <h2><a name="naming" id="naming">Remarques α propos des liens hypertextes et des
  546. conventions de nommage</a></h2>
  547.  
  548.     <p>Si vous utilisez la nΘgociation de langage, vous avez le choix entre
  549.     diffΘrentes conventions de nommage, car les fichiers peuvent possΘder
  550.     plusieurs extensions, et l'ordre dans lequel ces derniΦres apparaissent
  551.     est en gΘnΘral sans rapport (voir la documentation sur le module <a href="mod/mod_mime.html#multipleext">mod_mime</a>
  552.     pour plus de dΘtails).</p>
  553.  
  554.     <p>Un fichier type possΦde une extension liΘe au type MIME
  555.     (<em>par exemple</em>, <code>html</code>), mais parfois aussi une
  556.     extension liΘe α l'encodage (<em>par exemple</em>, <code>gz</code>),
  557.     et bien s√r une extension liΘe au langage
  558.     (<em>par exemple</em>, <code>en</code>) quand plusieurs variantes de
  559.     langage sont disponibles pour ce fichier.</p>
  560.  
  561.     <p>Exemples :</p>
  562.  
  563.     <ul>
  564.       <li>foo.en.html</li>
  565.  
  566.       <li>foo.html.en</li>
  567.  
  568.       <li>foo.en.html.gz</li>
  569.     </ul>
  570.  
  571.     <p>Ci-dessous d'autres exemples de noms de fichiers avec des liens
  572.     hypertextes valides et invalides :</p>
  573.  
  574.     <table class="bordered">
  575.       
  576.       <tr>
  577.         <th>Nom fichier</th>
  578.  
  579.         <th>lien valide</th>
  580.  
  581.         <th>Lien invalide</th>
  582.       </tr>
  583.  
  584.       <tr>
  585.         <td><em>foo.html.en</em></td>
  586.  
  587.         <td>foo<br />
  588.          foo.html</td>
  589.  
  590.         <td>-</td>
  591.       </tr>
  592.  
  593.       <tr>
  594.         <td><em>foo.en.html</em></td>
  595.  
  596.         <td>foo</td>
  597.  
  598.         <td>foo.html</td>
  599.       </tr>
  600.  
  601.       <tr>
  602.         <td><em>foo.html.en.gz</em></td>
  603.  
  604.         <td>foo<br />
  605.          foo.html</td>
  606.  
  607.         <td>foo.gz<br />
  608.          foo.html.gz</td>
  609.       </tr>
  610.  
  611.       <tr>
  612.         <td><em>foo.en.html.gz</em></td>
  613.  
  614.         <td>foo</td>
  615.  
  616.         <td>foo.html<br />
  617.          foo.html.gz<br />
  618.          foo.gz</td>
  619.       </tr>
  620.  
  621.       <tr>
  622.         <td><em>foo.gz.html.en</em></td>
  623.  
  624.         <td>foo<br />
  625.          foo.gz<br />
  626.          foo.gz.html</td>
  627.  
  628.         <td>foo.html</td>
  629.       </tr>
  630.  
  631.       <tr>
  632.         <td><em>foo.html.gz.en</em></td>
  633.  
  634.         <td>foo<br />
  635.          foo.html<br />
  636.          foo.html.gz</td>
  637.  
  638.         <td>foo.gz</td>
  639.       </tr>
  640.     </table>
  641.  
  642.     <p>En regardant la table ci-dessus, vous remarquerez qu'il est toujours
  643.     possible d'utiliser le nom de fichier sans extension dans un lien
  644.     (<em>par exemple</em>, <code>foo</code>). L'avantage est de pouvoir
  645.     dissimuler le type rΘel du fichier associΘ α un document et de pouvoir
  646.     le modifier
  647.     ultΘrieurement, <em>par exemple</em>, de <code>html</code> α
  648.     <code>shtml</code> ou <code>cgi</code> sans avoir α
  649.     mettre α jour aucun lien.</p>
  650.  
  651.     <p>Si vous souhaitez continuer α utiliser un type MIME dans vos liens
  652.     (<em>par exemple </em> <code>foo.html</code>), l'extension liΘe au langage
  653.     (y compris une extension liΘe α l'encodage s'il en existe une)
  654.     doit se trouver α droite de l'extension liΘe au type MIME
  655.     (<em>par exemple</em>, <code>foo.html.en</code>).</p>
  656. </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  657. <div class="section">
  658. <h2><a name="caching" id="caching">Remarque sur la mise en cache</a></h2>
  659.  
  660.     <p>Quand un cache stocke une reprΘsentation, il l'associe avec l'URL de la
  661.     requΩte. Lorsque cette URL est α nouveau demandΘe, le cache peut utiliser
  662.     la reprΘsentation stockΘe. Cependant, si la ressource est nΘgociable au
  663.     niveau du serveur, il se peut que seule la premiΦre variante demandΘe soit
  664.     mise en cache et de ce fait, la correspondance positive du cache peut
  665.     entraεner une rΘponse inappropriΘe. Pour Θviter ceci, Apache marque par
  666.     dΘfaut toutes les rΘponses qui sont retournΘes aprΦs une nΘgociation de
  667.     contenu comme "non-cachables" par les clients HTTP/1.0. Apache supporte
  668.     aussi les fonctionnalitΘs du protocole HTTP/1.1 afin de permettre la mise
  669.     en cache des rΘponses nΘgociΘes.</p>
  670.  
  671.     <p>Pour les requΩtes en provenance d'un client compatible HTTP/1.0
  672.     (un navigateur ou un cache), la directive <code class="directive"><a href="./mod/mod_negotiation.html#cachenegotiateddocs">CacheNegotiatedDocs</a></code> peut Ωtre utilisΘe
  673.     pour permettre la mise en cache des rΘponses qui ont fait l'objet d'une
  674.     nΘgociation. Cette directive peut intervenir dans la configuration au
  675.     niveau du serveur ou de l'h├┤te virtuel, et n'accepte aucun argument. Elle
  676.     n'a aucun effet sur les requΩtes en provenance de clients HTTP/1.1.</p>
  677.  
  678.     <p>Pour les clients HTTP/1.1, Apache envoie un en-tΩte de rΘponse HTTP
  679.     <code>Vary</code> afin d'indiquer les dimensions de la nΘgociation pour
  680.     cette rΘponse. Les caches peuvent
  681.     utiliser cette information afin de dΘterminer
  682.     si une requΩte peut Ωtre servie α partir de la copie locale. Pour inciter
  683.     un cache α utiliser la copie locale sans tenir compte des dimensions de la
  684.     nΘgociation, dΘfinissez la
  685.     <a href="env.html#special">variable d'environnement</a>
  686.     <code>force-no-vary</code>.</p>
  687.  
  688. </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
  689. <div class="section">
  690. <h2><a name="more" id="more">Pour plus d'informations</a></h2>
  691.  
  692.     <p>Pour plus d'informations α propos de la nΘgociation de contenu, voir le
  693.     document d'Alan J. Flavell <a href="http://ppewww.ph.gla.ac.uk/~flavell/www/lang-neg.html">Language
  694.     Negotiation Notes</a>. Mais gardez α l'esprit que ce document ne tiendra
  695.     peut-Ωtre pas compte des changements intervenus dans Apache 2.0.</p>
  696. </div></div>
  697. <div class="bottomlang">
  698. <p><span>Langues Disponibles: </span><a href="./en/content-negotiation.html" hreflang="en" rel="alternate" title="English"> en </a> |
  699. <a href="./fr/content-negotiation.html" title="Franτais"> fr </a> |
  700. <a href="./ja/content-negotiation.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
  701. <a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
  702. </div><div id="footer">
  703. <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>
  704. <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div>
  705. </body></html>