]> granicus.if.org Git - apache/blob - docs/manual/urlmapping.xml.fr
3b8522a22c854d966a5a547109c9cd88250e29b8
[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: 732819:921872 (outdated) -->
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 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_alias</module>
40 <module>mod_proxy</module>
41 <module>mod_rewrite</module>
42 <module>mod_userdir</module>
43 <module>mod_speling</module>
44 <module>mod_vhost_alias</module>
45 </modulelist>
46 <directivelist>
47 <directive module="mod_alias">Alias</directive>
48 <directive module="mod_alias">AliasMatch</directive>
49 <directive module="mod_speling">CheckSpelling</directive>
50 <directive module="core">DocumentRoot</directive>
51 <directive module="core">ErrorDocument</directive>
52 <directive module="core">Options</directive>
53 <directive module="mod_proxy">ProxyPass</directive>
54 <directive module="mod_proxy">ProxyPassReverse</directive>
55 <directive module="mod_proxy">ProxyPassReverseCookieDomain</directive>
56 <directive module="mod_proxy">ProxyPassReverseCookiePath</directive>
57 <directive module="mod_alias">Redirect</directive>
58 <directive module="mod_alias">RedirectMatch</directive>
59 <directive module="mod_rewrite">RewriteCond</directive>
60 <directive module="mod_rewrite">RewriteRule</directive>
61 <directive module="mod_alias">ScriptAlias</directive>
62 <directive module="mod_alias">ScriptAliasMatch</directive>
63 <directive module="mod_userdir">UserDir</directive>
64 </directivelist>
65 </related>
66 </section>
67
68 <section id="documentroot"><title>Racine des documents (DocumentRoot)</title>
69
70     <p>La m&eacute;thode par d&eacute;faut d'Apache pour d&eacute;terminer quel fichier servir pour
71     une requ&ecirc;te donn&eacute;e, consiste &agrave; extraire le chemin du fichier de la requ&ecirc;te
72     (la partie de l'URL qui suit le nom d'h&ocirc;te et le port), puis de l'ajouter
73     &agrave; la fin de la valeur de la directive
74     <directive module="core">DocumentRoot</directive> d&eacute;finie dans vos fichiers
75     de configuration.
76     Ainsi, les fichiers et r&eacute;pertoires
77     situ&eacute;s en dessous de <directive module="core">DocumentRoot</directive>
78     constituent l'arborescence de base des documents qui seront visibles
79     depuis le web.</p>
80
81     <p>Par exemple, si la directive
82     <directive module="core">DocumentRoot</directive> contient
83     <code>/var/www/html</code>, une requ&ecirc;te pour
84     <code>http://www.example.com/fish/guppies.html</code> retournera le
85     fichier <code>/var/www/html/fish/guppies.html</code> au client.</p>
86
87     <p>Apache supporte aussi les <a href="vhosts/">H&ocirc;tes virtuels</a>,
88     ce qui lui permet de traiter des requ&ecirc;tes pour plusieurs h&ocirc;tes.
89     Dans ce cas, un <directive module="core">DocumentRoot</directive>
90     diff&eacute;rent peut &ecirc;tre d&eacute;fini pour chaque h&ocirc;te virtuel;
91     les directives fournies par le module
92     <module>mod_vhost_alias</module> peuvent aussi &ecirc;tre utilis&eacute;es afin de
93     d&eacute;terminer dynamiquement le noeud appropri&eacute; du syst&egrave;me de fichiers
94     &agrave; partir duquel servir un contenu en fonction de l'adresse IP
95     ou du nom d'h&ocirc;te.</p>
96
97     <p>La directive <directive module="core">DocumentRoot</directive>  est
98     d&eacute;finie dans le fichier de configuration de votre serveur principal
99     (<code>httpd.conf</code>), mais peut aussi &ecirc;tre red&eacute;finie pour chaque
100     <a href="vhosts/">H&ocirc;te virtuel</a> suppl&eacute;mentaire que vous avez cr&eacute;&eacute;.</p>
101 </section>
102
103 <section id="outside"><title>Fichiers situ&eacute;s en dehors de
104 l'arborescence DocumentRoot</title>
105
106     <p>Il existe de nombreuses circonstances pour lesquelles il est n&eacute;cessaire
107     d'autoriser l'acc&egrave;s web &agrave; des portions du syst&egrave;me de fichiers qui ne se
108     trouvent pas dans l'arborescence <directive
109     module="core">DocumentRoot</directive>.  Apache propose de nombreuses
110     solutions pour r&eacute;aliser cela. Sur les syst&egrave;mes Unix, les liens
111     symboliques permettent de rattacher d'autres portions du syst&egrave;me de
112     fichiers au <directive
113     module="core">DocumentRoot</directive>. Pour des raisons de s&eacute;curit&eacute;,
114     Apache ne suivra les liens symboliques que si les <directive
115     module="core">Options</directive> pour le r&eacute;pertoire concern&eacute; contiennent
116     <code>FollowSymLinks</code> ou <code>SymLinksIfOwnerMatch</code>.</p>
117
118     <p>Une autre m&eacute;thode consiste &agrave; utiliser la directive <directive
119     module="mod_alias">Alias</directive> pour rattacher toute portion
120     du syst&egrave;me de fichiers &agrave; l'arborescence du site web. Par exemple, avec</p>
121
122 <example>Alias /docs /var/web</example>
123
124     <p>l'URL <code>http://www.example.com/docs/dir/file.html</code>
125     correspondra au fichier <code>/var/web/dir/file.html</code>. La
126     directive
127     <directive module="mod_alias">ScriptAlias</directive>
128     fonctionne de la m&ecirc;me mani&egrave;re, except&eacute; que tout contenu localis&eacute; dans le
129     chemin cible sera trait&eacute; comme un script <glossary ref="cgi"
130     >CGI</glossary>.</p>
131
132     <p>Pour les situations qui n&eacute;cessitent plus de flexibilit&eacute;, vous disposez
133     des directives <directive module="mod_alias">AliasMatch</directive>
134     et <directive module="mod_alias">ScriptAliasMatch</directive>
135     qui permettent des substitutions et comparaisons puissantes bas&eacute;es
136     sur les <glossary ref="regex">expressions rationnelles</glossary>.
137     Par exemple,</p>
138
139 <example>ScriptAliasMatch ^/~([a-zA-Z0-9]+)/cgi-bin/(.+)
140       /home/$1/cgi-bin/$2</example>
141
142     <p>fera correspondre une requ&ecirc;te du style
143     <code>http://example.com/~user/cgi-bin/script.cgi</code> au chemin
144     <code>/home/user/cgi-bin/script.cgi</code>, et traitera le fichier r&eacute;sultant
145     comme un script CGI.</p>
146 </section>
147
148 <section id="user"><title>R&eacute;pertoires des utilisateurs</title>
149
150     <p>Sur les syst&egrave;mes Unix, on peut traditionnellement faire r&eacute;f&eacute;rence
151     au r&eacute;pertoire personnel d'un <em>utilisateur</em> particulier &agrave; l'aide de
152     l'expression <code>~user/</code>.
153     Le module <module>mod_userdir</module>
154     &eacute;tend cette id&eacute;e au web en autorisant l'acc&egrave;s aux fichiers situ&eacute;s dans les
155     r&eacute;pertoires home des utilisateurs &agrave; l'aide d'URLs
156     comme dans ce qui suit :</p>
157
158 <example>http://www.example.com/~user/file.html</example>
159
160     <p>Pour des raisons de s&eacute;curit&eacute;, il est d&eacute;conseill&eacute; de permettre un acc&egrave;s
161     direct &agrave; un r&eacute;pertoire home d'utilisateur depuis le web. A cet effet, la
162     directive <directive module="mod_userdir">UserDir</directive>
163     sp&eacute;cifie un r&eacute;pertoire o&ugrave; sont situ&eacute;s les fichiers accessibles depuis le web
164     dans le r&eacute;pertoire home de l'utilisateur.
165     Avec la configuration par d&eacute;faut
166     <code>Userdir public_html</code>, l'URL ci-dessus correspondra &agrave; un fichier
167     dont le chemin sera du style
168     <code>/home/user/public_html/file.html</code> o&ugrave;
169     <code>/home/user/</code> est le r&eacute;pertoire home de l'utilisateur tel qu'il
170     est d&eacute;fini dans <code>/etc/passwd</code>.</p>
171
172     <p>La directive <code>Userdir</code> met &agrave; votre disposition de nombreuses
173     formes diff&eacute;rentes pour les syst&egrave;mes o&ugrave; <code>/etc/passwd</code> ne
174     sp&eacute;cifie pas la localisation du r&eacute;pertoire home.</p>
175
176     <p>Certains jugent le symbole "~" (dont le code sur le web est souvent
177     <code>%7e</code>) inappropri&eacute; et pr&eacute;f&egrave;rent utiliser une cha&icirc;ne de
178     caract&egrave;res diff&eacute;rente pour repr&eacute;senter les r&eacute;pertoires utilisateurs.
179     mod_userdir ne supporte pas cette fonctionnalit&eacute;. Cependant, si les
180     r&eacute;pertoires home des utilisateurs sont structur&eacute;s de mani&egrave;re rationnelle,
181     il est possible d'utiliser la directive
182     <directive module="mod_alias">AliasMatch</directive>
183     pour obtenir l'effet d&eacute;sir&eacute;. Par exemple, pour faire correspondre
184     <code>http://www.example.com/upages/user/file.html</code> &agrave;
185     <code>/home/user/public_html/file.html</code>, utilisez la directive
186     <code>AliasMatch</code> suivante :</p>
187
188 <example>AliasMatch ^/upages/([a-zA-Z0-9]+)/?(.*)
189       /home/$1/public_html/$2</example>
190 </section>
191
192 <section id="redirect"><title>Redirection d'URL</title>
193
194     <p>Les directives de configuration d&eacute;crites dans les sections pr&eacute;c&eacute;dentes
195     demandent &agrave; Apache d'extraire un contenu depuis un emplacement sp&eacute;cifique
196     du syst&egrave;me de fichiers
197     et de la retourner au client. Il est cependant parfois
198     souhaitable d'informer le
199     client que le contenu demand&eacute; est localis&eacute; &agrave; une URL diff&eacute;rente, et de
200     demander au client d'&eacute;laborer une nouvelle requ&ecirc;te avec la nouvelle URL.
201     Ce processus se nomme <em>redirection</em> et est impl&eacute;ment&eacute; par la
202     directive <directive module="mod_alias">Redirect</directive>.
203     Par exemple, si le contenu du r&eacute;pertoire <code>/foo/</code> sous
204     <directive module="core">DocumentRoot</directive> est d&eacute;plac&eacute; vers le
205     nouveau r&eacute;pertoire <code>/bar/</code>, vous pouvez demander aux clients
206     de le requ&eacute;rir &agrave; sa nouvelle localisation comme suit :</p>
207
208 <example>Redirect permanent /foo/ http://www.example.com/bar/</example>
209
210     <p>Ceci aura pour effet de rediriger tout chemin d'URL commen&ccedil;ant par
211     <code>/foo/</code> vers le m&ecirc;me chemin d'URL sur le serveur
212     <code>www.example.com</code> en rempla&ccedil;ant <code>/foo/</code> par
213     <code>/bar/</code>. Vous pouvez rediriger les clients non seulement sur le
214     serveur d'origine, mais aussi vers n'importe quel autre serveur.</p>
215
216     <p>Apache propose aussi la directive <directive
217     module="mod_alias">RedirectMatch</directive> pour traiter les probl&egrave;mes
218     de r&eacute;&eacute;criture d'une plus grande complexit&eacute;. Par exemple, afin de rediriger
219     les requ&ecirc;tes pour la page d'accueil du site vers un site diff&eacute;rent, mais
220     laisser toutes les autres requ&ecirc;tes inchang&eacute;es, utilisez la
221     configuration suivante :</p>
222
223 <example>RedirectMatch permanent ^/$
224       http://www.example.com/startpage.html</example>
225
226     <p>De m&ecirc;me, pour rediriger temporairement toutes les pages d'un site
227     vers une page particuli&egrave;re d'un autre site, utilisez ce qui suit :</p>
228
229 <example>RedirectMatch temp .*
230       http://othersite.example.com/startpage.html</example>
231 </section>
232
233 <section id="proxy"><title>Mandataire inverse (Reverse Proxy)</title>
234
235 <p>Apache vous permet aussi de rapatrier des documents distants
236 dans l'espace des URL du serveur local.
237 Cette technique est appel&eacute;e <em>mandataire inverse ou reverse
238 proxying</em> car le serveur web agit comme un serveur mandataire en
239 rapatriant les documents depuis un serveur distant puis les renvoyant
240 au client. Ceci diff&egrave;re d'un service de proxy usuel car, pour le client,
241 les documents semblent appartenir au serveur mandataire inverse.</p>
242
243 <p>Dans l'exemple suivant, quand les clients demandent des documents situ&eacute;s
244 dans le r&eacute;pertoire
245 <code>/foo/</code>, le serveur rapatrie ces documents depuis le r&eacute;pertoire
246 <code>/bar/</code> sur <code>internal.example.com</code>
247 et les renvoie au client comme s'ils appartenaient au serveur local.</p>
248
249 <example>
250 ProxyPass /foo/ http://internal.example.com/bar/<br />
251 ProxyPassReverse /foo/ http://internal.example.com/bar/<br />
252 ProxyPassReverseCookieDomain internal.example.com public.example.com<br />
253 ProxyPassReverseCookiePath /foo/ /bar/
254 </example>
255
256 <p>La directive <directive module="mod_proxy">ProxyPass</directive> configure
257 le serveur pour rapatrier les documents appropri&eacute;s, alors que la directive
258 <directive module="mod_proxy">ProxyPassReverse</directive>
259 r&eacute;&eacute;crit les redirections provenant de
260 <code>internal.example.com</code> de telle mani&egrave;re qu'elles ciblent le
261 r&eacute;pertoire appropri&eacute; sur le serveur local. De mani&egrave;re similaire, les directives
262 <directive module="mod_proxy">ProxyPassReverseCookieDomain</directive>
263 et <directive module="mod_proxy">ProxyPassReverseCookiePath</directive>
264 r&eacute;&eacute;crivent les cookies &eacute;labor&eacute;s par le serveur d'arri&egrave;re-plan.</p>
265 <p>Il est important de noter cependant, que les liens situ&eacute;s dans les documents
266 ne seront pas r&eacute;&eacute;crits.  Ainsi, tout lien absolu sur
267 <code>internal.example.com</code> fera d&eacute;crocher le client
268 du serveur mandataire et effectuer sa requ&ecirc;te directement sur
269 <code>internal.example.com</code>.  Un module tiers
270 <a href="http://apache.webthing.com/mod_proxy_html/">mod_proxy_html</a>
271 permet de r&eacute;&eacute;crire les liens dans les documents HTML et XHTML.</p>
272 </section>
273
274 <section id="rewrite"><title>Moteur de r&eacute;&eacute;criture</title>
275
276     <p>Le moteur de r&eacute;&eacute;criture <module>mod_rewrite</module> peut s'av&eacute;rer
277     utile lorsqu'une substitution plus puissante est n&eacute;cessaire.
278     Les directives fournies par ce module utilisent des caract&eacute;ristiques de la
279     requ&ecirc;te comme le type de navigateur ou l'adresse IP source afin de d&eacute;cider
280     depuis o&ugrave; servir le contenu. En outre, mod_rewrite peut utiliser des
281     fichiers ou programmes de bases de donn&eacute;es externes pour d&eacute;terminer comment
282     traiter une requ&ecirc;te. Le moteur de r&eacute;&eacute;criture peut effectuer les trois types
283     de mise en correspondance discut&eacute;s plus haut :
284     redirections internes (aliases), redirections externes, et services mandataires.
285     De nombreux exemples pratiques utilisant mod_rewrite sont discut&eacute;s dans la
286     <a href="rewrite/">documentation d&eacute;taill&eacute;e de mod_rewrite</a>.</p>
287 </section>
288
289 <section id="notfound"><title>Fichier non trouv&eacute; (File Not Found)</title>
290
291     <p>In&eacute;vitablement, appara&icirc;tront des URLs qui ne correspondront &agrave; aucun
292     fichier du syst&egrave;me de fichiers.
293     Ceci peut arriver pour de nombreuses raisons.
294     Il peut s'agir du d&eacute;placement de documents d'une
295     localisation vers une autre. Dans ce cas, le mieux est d'utiliser la
296     <a href="#redirect">redirection d'URL</a> pour informer les clients de la
297     nouvelle localisation de la ressource. De cette fa&ccedil;on, vous &ecirc;tes sur que
298     les anciens signets et liens continueront de fonctionner, m&ecirc;me si la
299     ressource est d&eacute;plac&eacute;e.</p>
300
301     <p>Une autre cause fr&eacute;quente d'erreurs "File Not Found" est l'erreur de
302     frappe accidentelle dans les URLs, soit directement dans le navigateur,
303     soit dans les liens HTML. Apache propose le module
304     <module>mod_speling</module> (sic) pour tenter de r&eacute;soudre ce probl&egrave;me.
305     Lorsque ce module est activ&eacute;, il intercepte les erreurs
306     "File Not Found" et recherche une ressource poss&eacute;dant un nom de fichier
307     similaire. Si un tel fichier est trouv&eacute;, mod_speling va envoyer une
308     redirection HTTP au client pour lui communiquer l'URL correcte.
309     Si plusieurs fichiers proches sont trouv&eacute;s, une liste des alternatives
310     possibles sera pr&eacute;sent&eacute;e au client.</p>
311
312     <p>mod_speling poss&egrave;de une fonctionnalit&eacute; particuli&egrave;rement utile :
313     il compare les noms de fichiers sans tenir compte de la casse.
314     Ceci peut aider les syst&egrave;mes o&ugrave; les utilisateurs ne connaissent pas la
315     sensibilit&eacute; des URLs &agrave; la casse et bien s&ucirc;r les syst&egrave;mes de fichiers unix.
316     Mais l'utilisation de mod_speling pour toute autre chose que la correction
317     occasionnelle d'URLs peut augmenter la charge du serveur, car chaque
318     requ&ecirc;te "incorrecte" entra&icirc;ne une redirection d'URL et une nouvelle requ&ecirc;te
319     de la part du client.</p>
320
321     <p>Si toutes les tentatives pour localiser le contenu &eacute;chouent, Apache
322     retourne une page d'erreur avec le code de statut HTTP 404
323     (file not found). L'apparence de cette page est contr&ocirc;l&eacute;e &agrave; l'aide de la
324     directive <directive module="core">ErrorDocument</directive>
325     et peut &ecirc;tre personnalis&eacute;e de mani&egrave;re tr&egrave;s flexible comme discut&eacute; dans le
326     document
327     <a href="custom-error.html">R&eacute;ponses personnalis&eacute;es aux erreurs</a>.</p>
328 </section>
329
330 </manualpage>