]> granicus.if.org Git - apache/blob - docs/manual/urlmapping.xml.fr
Update XForms.
[apache] / docs / manual / urlmapping.xml.fr
1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- French translation : Lucien GENTIS -->
5 <!-- Reviewed by : Vincent Deffontaines -->
6 <!-- English Revision: 1673945 -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <manualpage metafile="urlmapping.xml.meta">
26
27   <title> Mise en correspondance des URLs avec le syst&egrave;me de fichiers</title>
28
29   <summary>
30     <p>Ce document explique comment le serveur HTTP Apache utilise l'URL contenue dans une
31     requ&ecirc;te pour d&eacute;terminer le noeud du syst&egrave;me de fichier &agrave; partir duquel le
32     fichier devra &ecirc;tre servi.</p>
33   </summary>
34
35 <section id="related"><title>Modules et directives concern&eacute;s</title>
36
37 <related>
38 <modulelist>
39 <module>mod_actions</module>
40 <module>mod_alias</module>
41 <module>mod_autoindex</module>
42 <module>mod_dir</module>
43 <module>mod_imagemap</module>
44 <module>mod_negotiation</module>
45 <module>mod_proxy</module>
46 <module>mod_rewrite</module>
47 <module>mod_speling</module>
48 <module>mod_userdir</module>
49 <module>mod_vhost_alias</module>
50 </modulelist>
51 <directivelist>
52 <directive module="mod_alias">Alias</directive>
53 <directive module="mod_alias">AliasMatch</directive>
54 <directive module="mod_speling">CheckSpelling</directive>
55 <directive module="mod_dir">DirectoryIndex</directive>
56 <directive module="core">DocumentRoot</directive>
57 <directive module="core">ErrorDocument</directive>
58 <directive module="core">Options</directive>
59 <directive module="mod_proxy">ProxyPass</directive>
60 <directive module="mod_proxy">ProxyPassReverse</directive>
61 <directive module="mod_proxy">ProxyPassReverseCookieDomain</directive>
62 <directive module="mod_proxy">ProxyPassReverseCookiePath</directive>
63 <directive module="mod_alias">Redirect</directive>
64 <directive module="mod_alias">RedirectMatch</directive>
65 <directive module="mod_rewrite">RewriteCond</directive>
66 <directive module="mod_rewrite">RewriteRule</directive>
67 <directive module="mod_alias">ScriptAlias</directive>
68 <directive module="mod_alias">ScriptAliasMatch</directive>
69 <directive module="mod_userdir">UserDir</directive>
70 </directivelist>
71 </related>
72 </section>
73
74 <section id="documentroot"><title>Racine des documents (DocumentRoot)</title>
75
76     <p>La m&eacute;thode par d&eacute;faut de httpd pour d&eacute;terminer quel fichier servir pour
77     une requ&ecirc;te donn&eacute;e, consiste &agrave; extraire le chemin du fichier de la requ&ecirc;te
78     (la partie de l'URL qui suit le nom d'h&ocirc;te et le port), puis de l'ajouter
79     &agrave; la fin de la valeur de la directive
80     <directive module="core">DocumentRoot</directive> d&eacute;finie dans vos fichiers
81     de configuration.
82     Ainsi, les fichiers et r&eacute;pertoires
83     situ&eacute;s en dessous de <directive module="core">DocumentRoot</directive>
84     constituent l'arborescence de base des documents qui seront visibles
85     depuis le web.</p>
86
87     <p>Par exemple, si la directive
88     <directive module="core">DocumentRoot</directive> contient
89     <code>/var/www/html</code>, une requ&ecirc;te pour
90     <code>http://www.example.com/fish/guppies.html</code> retournera le
91     fichier <code>/var/www/html/fish/guppies.html</code> au client.</p>
92
93     <p>Si la requ&ecirc;te concerne un r&eacute;pertoire (autrement dit un chemin se
94     terminant par un slash <code>/</code>), le nom du fichier qui sera
95     recherch&eacute; et servi depuis ce r&eacute;pertoire est d&eacute;fini via la directive
96     <directive module="mod_dir">DirectoryIndex</directive>. Par exemple,
97     supposons que <code>DocumentRoot</code> ait &eacute;t&eacute; d&eacute;finie comme
98     pr&eacute;c&eacute;demment, et que vous ayez d&eacute;fini <code>DirectoryIndex</code>
99     comme suit :</p>
100
101     <example>DirectoryIndex index.html index.php</example>
102
103     <p>Si httpd re&ccedil;oit alors une requ&ecirc;te pour
104     <code>http://www.example.com/fish/</code>, il tentera de servir le
105     fichier <code>/var/www/html/fish/index.html</code>. Si ce fichier
106     n'existe pas, il tentera de servir le fichier
107     <code>/var/www/html/fish/index.php</code>.</p>
108
109     <p>Si aucun de ces fichiers existe, httpd tentera de g&eacute;n&eacute;rer et
110     d'afficher un index du r&eacute;pertoire, &agrave; condition que
111     <module>mod_autoindex</module> ait &eacute;t&eacute; charg&eacute; et configur&eacute; pour le
112     permettre.</p>
113
114     <p>httpd supporte aussi les <a href="vhosts/">H&ocirc;tes virtuels</a>,
115     ce qui lui permet de traiter des requ&ecirc;tes pour plusieurs h&ocirc;tes.
116     Dans ce cas, un <directive module="core">DocumentRoot</directive>
117     diff&eacute;rent peut &ecirc;tre d&eacute;fini pour chaque h&ocirc;te virtuel;
118     les directives fournies par le module
119     <module>mod_vhost_alias</module> peuvent aussi &ecirc;tre utilis&eacute;es afin de
120     d&eacute;terminer dynamiquement le noeud appropri&eacute; du syst&egrave;me de fichiers
121     &agrave; partir duquel servir un contenu en fonction de l'adresse IP
122     ou du nom d'h&ocirc;te.</p>
123
124     <p>La directive <directive module="core">DocumentRoot</directive>  est
125     d&eacute;finie dans le fichier de configuration de votre serveur principal
126     (<code>httpd.conf</code>), mais peut aussi &ecirc;tre red&eacute;finie pour chaque
127     <a href="vhosts/">H&ocirc;te virtuel</a> suppl&eacute;mentaire que vous avez cr&eacute;&eacute;.</p>
128 </section>
129
130 <section id="outside"><title>Fichiers situ&eacute;s en dehors de
131 l'arborescence DocumentRoot</title>
132
133     <p>Il existe de nombreuses circonstances pour lesquelles il est n&eacute;cessaire
134     d'autoriser l'acc&egrave;s web &agrave; des portions du syst&egrave;me de fichiers qui ne se
135     trouvent pas dans l'arborescence <directive
136     module="core">DocumentRoot</directive>.  httpd propose de nombreuses
137     solutions pour r&eacute;aliser cela. Sur les syst&egrave;mes Unix, les liens
138     symboliques permettent de rattacher d'autres portions du syst&egrave;me de
139     fichiers au <directive
140     module="core">DocumentRoot</directive>. Pour des raisons de s&eacute;curit&eacute;,
141     httpd ne suivra les liens symboliques que si les <directive
142     module="core">Options</directive> pour le r&eacute;pertoire concern&eacute; contiennent
143     <code>FollowSymLinks</code> ou <code>SymLinksIfOwnerMatch</code>.</p>
144
145     <p>Une autre m&eacute;thode consiste &agrave; utiliser la directive <directive
146     module="mod_alias">Alias</directive> pour rattacher toute portion
147     du syst&egrave;me de fichiers &agrave; l'arborescence du site web. Par exemple, avec</p>
148
149 <highlight language="config">Alias "/docs" "/var/web"</highlight>
150
151     <p>l'URL <code>http://www.example.com/docs/dir/file.html</code>
152     correspondra au fichier <code>/var/web/dir/file.html</code>. La
153     directive
154     <directive module="mod_alias">ScriptAlias</directive>
155     fonctionne de la m&ecirc;me mani&egrave;re, except&eacute; que tout contenu localis&eacute; dans le
156     chemin cible sera trait&eacute; comme un script <glossary ref="cgi"
157     >CGI</glossary>.</p>
158
159     <p>Pour les situations qui n&eacute;cessitent plus de flexibilit&eacute;, vous disposez
160     des directives <directive module="mod_alias">AliasMatch</directive>
161     et <directive module="mod_alias">ScriptAliasMatch</directive>
162     qui permettent des substitutions et comparaisons puissantes bas&eacute;es
163     sur les <glossary ref="regex">expressions rationnelles</glossary>.
164     Par exemple,</p>
165
166 <highlight language="config">
167     ScriptAliasMatch "^/~([a-zA-Z0-9]+)/cgi-bin/(.+)" "/home/$1/cgi-bin/$2"
168     </highlight>
169
170     <p>fera correspondre une requ&ecirc;te du style
171     <code>http://example.com/~user/cgi-bin/script.cgi</code> au chemin
172     <code>/home/user/cgi-bin/script.cgi</code>, et traitera le fichier r&eacute;sultant
173     comme un script CGI.</p>
174 </section>
175
176 <section id="user"><title>R&eacute;pertoires des utilisateurs</title>
177
178     <p>Sur les syst&egrave;mes Unix, on peut traditionnellement faire r&eacute;f&eacute;rence
179     au r&eacute;pertoire personnel d'un <em>utilisateur</em> particulier &agrave; l'aide de
180     l'expression <code>~user/</code>.
181     Le module <module>mod_userdir</module>
182     &eacute;tend cette id&eacute;e au web en autorisant l'acc&egrave;s aux fichiers situ&eacute;s dans les
183     r&eacute;pertoires home des utilisateurs &agrave; l'aide d'URLs
184     comme dans ce qui suit :</p>
185
186 <example>http://www.example.com/~user/file.html</example>
187
188     <p>Pour des raisons de s&eacute;curit&eacute;, il est d&eacute;conseill&eacute; de permettre un acc&egrave;s
189     direct &agrave; un r&eacute;pertoire home d'utilisateur depuis le web. A cet effet, la
190     directive <directive module="mod_userdir">UserDir</directive>
191     sp&eacute;cifie un r&eacute;pertoire o&ugrave; sont situ&eacute;s les fichiers accessibles depuis le web
192     dans le r&eacute;pertoire home de l'utilisateur.
193     Avec la configuration par d&eacute;faut
194     <code>Userdir public_html</code>, l'URL ci-dessus correspondra &agrave; un fichier
195     dont le chemin sera du style
196     <code>/home/user/public_html/file.html</code> o&ugrave;
197     <code>/home/user/</code> est le r&eacute;pertoire home de l'utilisateur tel qu'il
198     est d&eacute;fini dans <code>/etc/passwd</code>.</p>
199
200     <p>La directive <code>Userdir</code> met &agrave; votre disposition de nombreuses
201     formes diff&eacute;rentes pour les syst&egrave;mes o&ugrave; <code>/etc/passwd</code> ne
202     sp&eacute;cifie pas la localisation du r&eacute;pertoire home.</p>
203
204     <p>Certains jugent le symbole "~" (dont le code sur le web est souvent
205     <code>%7e</code>) inappropri&eacute; et pr&eacute;f&egrave;rent utiliser une cha&icirc;ne de
206     caract&egrave;res diff&eacute;rente pour repr&eacute;senter les r&eacute;pertoires utilisateurs.
207     mod_userdir ne supporte pas cette fonctionnalit&eacute;. Cependant, si les
208     r&eacute;pertoires home des utilisateurs sont structur&eacute;s de mani&egrave;re rationnelle,
209     il est possible d'utiliser la directive
210     <directive module="mod_alias">AliasMatch</directive>
211     pour obtenir l'effet d&eacute;sir&eacute;. Par exemple, pour faire correspondre
212     <code>http://www.example.com/upages/user/file.html</code> &agrave;
213     <code>/home/user/public_html/file.html</code>, utilisez la directive
214     <code>AliasMatch</code> suivante :</p>
215
216 <highlight language="config">
217     AliasMatch "^/upages/([a-zA-Z0-9]+)(/(.*))?$" "/home/$1/public_html/$3"
218     </highlight>
219 </section>
220
221 <section id="redirect"><title>Redirection d'URL</title>
222
223     <p>Les directives de configuration d&eacute;crites dans les sections pr&eacute;c&eacute;dentes
224     demandent &agrave; httpd d'extraire un contenu depuis un emplacement sp&eacute;cifique
225     du syst&egrave;me de fichiers
226     et de la retourner au client. Il est cependant parfois
227     souhaitable d'informer le
228     client que le contenu demand&eacute; est localis&eacute; &agrave; une URL diff&eacute;rente, et de
229     demander au client d'&eacute;laborer une nouvelle requ&ecirc;te avec la nouvelle URL.
230     Ce processus se nomme <em>redirection</em> et est impl&eacute;ment&eacute; par la
231     directive <directive module="mod_alias">Redirect</directive>.
232     Par exemple, si le contenu du r&eacute;pertoire <code>/foo/</code> sous
233     <directive module="core">DocumentRoot</directive> est d&eacute;plac&eacute; vers le
234     nouveau r&eacute;pertoire <code>/bar/</code>, vous pouvez demander aux clients
235     de le requ&eacute;rir &agrave; sa nouvelle localisation comme suit :</p>
236
237 <highlight language="config">
238     Redirect permanent "/foo/"   "http://www.example.com/bar/"
239     </highlight>
240
241     <p>Ceci aura pour effet de rediriger tout chemin d'URL commen&ccedil;ant par
242     <code>/foo/</code> vers le m&ecirc;me chemin d'URL sur le serveur
243     <code>www.example.com</code> en rempla&ccedil;ant <code>/foo/</code> par
244     <code>/bar/</code>. Vous pouvez rediriger les clients non seulement sur le
245     serveur d'origine, mais aussi vers n'importe quel autre serveur.</p>
246
247     <p>httpd propose aussi la directive <directive
248     module="mod_alias">RedirectMatch</directive> pour traiter les probl&egrave;mes
249     de r&eacute;&eacute;criture d'une plus grande complexit&eacute;. Par exemple, afin de rediriger
250     les requ&ecirc;tes pour la page d'accueil du site vers un site diff&eacute;rent, mais
251     laisser toutes les autres requ&ecirc;tes inchang&eacute;es, utilisez la
252     configuration suivante :</p>
253
254 <highlight language="config">
255    RedirectMatch permanent "^/$" "http://www.example.com/startpage.html"
256     </highlight>
257
258     <p>De m&ecirc;me, pour rediriger temporairement toutes les pages d'un site
259     vers une page particuli&egrave;re d'un autre site, utilisez ce qui suit :</p>
260
261 <highlight language="config">
262     RedirectMatch temp ".*" "http://othersite.example.com/startpage.html"
263     </highlight>
264 </section>
265
266 <section id="proxy"><title>Mandataire inverse (Reverse Proxy)</title>
267
268 <p>httpd vous permet aussi de rapatrier des documents distants
269 dans l'espace des URL du serveur local.
270 Cette technique est appel&eacute;e <em>mandataire inverse ou reverse
271 proxying</em> car le serveur web agit comme un serveur mandataire en
272 rapatriant les documents depuis un serveur distant puis les renvoyant
273 au client. Ceci diff&egrave;re d'un service de mandataire usuel (direct) car, pour le client,
274 les documents semblent appartenir au serveur mandataire inverse.</p>
275
276 <p>Dans l'exemple suivant, quand les clients demandent des documents situ&eacute;s
277 dans le r&eacute;pertoire
278 <code>/foo/</code>, le serveur rapatrie ces documents depuis le r&eacute;pertoire
279 <code>/bar/</code> sur <code>internal.example.com</code>
280 et les renvoie au client comme s'ils appartenaient au serveur local.</p>
281
282 <highlight language="config">
283 ProxyPass "/foo/" "http://internal.example.com/bar/"<br />
284 ProxyPassReverse "/foo/" "http://internal.example.com/bar/"<br />
285 ProxyPassReverseCookieDomain internal.example.com public.example.com<br />
286 ProxyPassReverseCookiePath "/foo/" "/bar/"
287 </highlight>
288
289 <p>La directive <directive module="mod_proxy">ProxyPass</directive> configure
290 le serveur pour rapatrier les documents appropri&eacute;s, alors que la directive
291 <directive module="mod_proxy">ProxyPassReverse</directive>
292 r&eacute;&eacute;crit les redirections provenant de
293 <code>internal.example.com</code> de telle mani&egrave;re qu'elles ciblent le
294 r&eacute;pertoire appropri&eacute; sur le serveur local. De mani&egrave;re similaire, les directives
295 <directive module="mod_proxy">ProxyPassReverseCookieDomain</directive>
296 et <directive module="mod_proxy">ProxyPassReverseCookiePath</directive>
297 r&eacute;&eacute;crivent les cookies &eacute;labor&eacute;s par le serveur d'arri&egrave;re-plan.</p>
298 <p>Il est important de noter cependant, que les liens situ&eacute;s dans les documents
299 ne seront pas r&eacute;&eacute;crits.  Ainsi, tout lien absolu sur
300 <code>internal.example.com</code> fera d&eacute;crocher le client
301 du serveur mandataire et effectuer sa requ&ecirc;te directement sur
302 <code>internal.example.com</code>. Vous pouvez modifier ces liens (et
303 d'utres contenus) situ&eacute;s dans la page au moment o&ugrave; elle est envoy&eacute;e au
304 client en utilisant le module <module>mod_substitute</module>.</p>
305
306 <highlight language="config">
307 Substitute s/internal\.example\.com/www.example.com/i
308 </highlight>
309
310 <p>Le module <module>mod_proxy_html</module> rend possible une r&eacute;&eacute;criture plus
311 &eacute;labor&eacute;e des liens en HTML et XHTML. Il permet de cr&eacute;er des listes
312 d'URLs et de leurs r&eacute;&eacute;critures, de fa&ccedil;on &agrave; pouvoir g&eacute;rer des sc&eacute;narios
313 de r&eacute;&eacute;criture complexes.</p>
314 </section>
315
316 <section id="rewrite"><title>Moteur de r&eacute;&eacute;criture</title>
317
318     <p>Le moteur de r&eacute;&eacute;criture <module>mod_rewrite</module> peut s'av&eacute;rer
319     utile lorsqu'une substitution plus puissante est n&eacute;cessaire.
320     Les directives fournies par ce module peuvent utiliser des caract&eacute;ristiques de la
321     requ&ecirc;te comme le type de navigateur ou l'adresse IP source afin de d&eacute;cider
322     depuis o&ugrave; servir le contenu. En outre, mod_rewrite peut utiliser des
323     fichiers ou programmes de bases de donn&eacute;es externes pour d&eacute;terminer comment
324     traiter une requ&ecirc;te. Le moteur de r&eacute;&eacute;criture peut effectuer les trois types
325     de mise en correspondance discut&eacute;s plus haut :
326     redirections internes (aliases), redirections externes, et services mandataires.
327     De nombreux exemples pratiques utilisant mod_rewrite sont discut&eacute;s dans la
328     <a href="rewrite/">documentation d&eacute;taill&eacute;e de mod_rewrite</a>.</p>
329 </section>
330
331 <section id="notfound"><title>Fichier non trouv&eacute; (File Not Found)</title>
332
333     <p>In&eacute;vitablement, appara&icirc;tront des URLs qui ne correspondront &agrave; aucun
334     fichier du syst&egrave;me de fichiers.
335     Ceci peut arriver pour de nombreuses raisons.
336     Il peut s'agir du d&eacute;placement de documents d'une
337     localisation vers une autre. Dans ce cas, le mieux est d'utiliser la
338     <a href="#redirect">redirection d'URL</a> pour informer les clients de la
339     nouvelle localisation de la ressource. De cette fa&ccedil;on, vous &ecirc;tes sur que
340     les anciens signets et liens continueront de fonctionner, m&ecirc;me si la
341     ressource est d&eacute;plac&eacute;e.</p>
342
343     <p>Une autre cause fr&eacute;quente d'erreurs "File Not Found" est l'erreur de
344     frappe accidentelle dans les URLs, soit directement dans le navigateur,
345     soit dans les liens HTML. httpd propose le module
346     <module>mod_speling</module> (sic) pour tenter de r&eacute;soudre ce probl&egrave;me.
347     Lorsque ce module est activ&eacute;, il intercepte les erreurs
348     "File Not Found" et recherche une ressource poss&eacute;dant un nom de fichier
349     similaire. Si un tel fichier est trouv&eacute;, mod_speling va envoyer une
350     redirection HTTP au client pour lui communiquer l'URL correcte.
351     Si plusieurs fichiers proches sont trouv&eacute;s, une liste des alternatives
352     possibles sera pr&eacute;sent&eacute;e au client.</p>
353
354     <p>mod_speling poss&egrave;de une fonctionnalit&eacute; particuli&egrave;rement utile :
355     il compare les noms de fichiers sans tenir compte de la casse.
356     Ceci peut aider les syst&egrave;mes o&ugrave; les utilisateurs ne connaissent pas la
357     sensibilit&eacute; des URLs &agrave; la casse et bien s&ucirc;r les syst&egrave;mes de fichiers unix.
358     Mais l'utilisation de mod_speling pour toute autre chose que la correction
359     occasionnelle d'URLs peut augmenter la charge du serveur, car chaque
360     requ&ecirc;te "incorrecte" entra&icirc;ne une redirection d'URL et une nouvelle requ&ecirc;te
361     de la part du client.</p>
362
363     <p><module>mod_dir</module> fournit la directive <directive
364     module="mod_dir">FallbackResource</directive> qui permet d'associer
365     des URIs virtuels &agrave; une ressource r&eacute;elle qui peut ainsi les servir.
366     Cette directive remplace avantageusement
367     <module>mod_rewrite</module> lors de l'impl&eacute;mentation d'un
368     "contr&ocirc;leur frontal".</p>
369
370     <p>Si toutes les tentatives pour localiser le contenu
371     &eacute;chouent, httpd
372     retourne une page d'erreur avec le code de statut HTTP 404
373     (file not found). L'apparence de cette page est contr&ocirc;l&eacute;e &agrave; l'aide de la
374     directive <directive module="core">ErrorDocument</directive>
375     et peut &ecirc;tre personnalis&eacute;e de mani&egrave;re tr&egrave;s flexible comme discut&eacute; dans le
376     document
377     <a href="custom-error.html">R&eacute;ponses personnalis&eacute;es aux erreurs</a>.</p>
378 </section>
379
380 <section id="other"><title>Autres modules de mise en correspondance des
381 URLs</title>
382
383 <!-- TODO Flesh out each of the items in the list below. -->
384
385     <p>Les autres modules disponibles pour la mise en correspondance des
386     URLs sont :</p>
387     <ul>
388     <li><module>mod_actions</module> - Met une URL en correspondance
389     avec un script CGI en fonction de la m&eacute;thode de la requ&ecirc;te, ou du
390     type MIME de la ressource.</li>
391     <li><module>mod_dir</module> - Permet une mise en correspondance
392     basique d'un slash terminal dans un fichier index comme
393     <code>index.html</code>.</li>
394     <li><module>mod_imagemap</module> - Met en correspondance une
395     requ&ecirc;te avec une URL en fonction de la zone d'une image int&eacute;gr&eacute;e &agrave;
396     un document HTML dans laquelle un utilisateur clique.</li>
397     <li><module>mod_negotiation</module> - S&eacute;lectionne le document
398     appropri&eacute; en fonction de pr&eacute;f&eacute;rences du client telles que la langue
399     ou la compression du contenu.</li>
400     </ul>
401     
402 </section>
403
404 </manualpage>