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