2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 770506 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
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
16 http://www.apache.org/licenses/LICENSE-2.0
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.
25 <modulesynopsis metafile="mod_alias.xml.meta">
27 <name>mod_alias</name>
28 <description>Permet d'atteindre différentes parties du système de
29 fichiers depuis l'arborescence des documents du site web, ainsi que la
30 redirection d'URL</description>
32 <sourcefile>mod_alias.c</sourcefile>
33 <identifier>alias_module</identifier>
36 <p>Les directives fournies par ce module permettent de manipuler et
37 de contrôler les URLs à l'arrivée des requêtes sur le serveur. Les
38 directives <directive module="mod_alias">Alias</directive> et
39 <directive module="mod_alias">ScriptAlias</directive> permettent de
40 faire correspondre des URLs avec des chemins du système de fichiers.
41 Ceci permet de servir des contenus qui ne sont pas situés dans
42 l'arborescence de <directive
43 module="core">DocumentRoot</directive> comme s'ils y étaient
44 réellement. La directive <directive
45 module="mod_alias">ScriptAlias</directive> a pour effet
46 supplémentaire de marquer le répertoire cible comme conteneur de
49 <p>Les directives <directive module="mod_alias">Redirect</directive>
50 indiquent aux clients qu'ils doivent effectuer une nouvelle requête
51 avec une URL différente. Elles sont souvent utilisées lorsqu'une
52 ressource a été déplacée.</p>
54 <p><module>mod_alias</module> est conçu pour traiter des tâches
55 simples de manipulation d'URL. Pour des tâches plus complexes comme
56 la manipulation des chaînes d'arguments des requêtes, utilisez
57 plutôt les outils fournis par le module <module>mod_rewrite</module></p>
61 <seealso><module>mod_rewrite</module></seealso> <seealso><a
62 href="../urlmapping.html">Mise en correspondance des URLs avec le
63 système de fichiers</a></seealso>
65 <section id="order"><title>Chronologie du traitement</title>
67 <p>Les alias et redirections apparaissant dans différents contextes
68 sont traités comme les autres directives en respectant les <a
69 href="../sections.html#mergin">règles de fusion</a> standards. Par
70 contre, ils sont traités selon une chronologie particulière
71 lorsqu'ils apparaissent dans le même contexte (par exemple, dans la
72 même section <directive type="section"
73 module="core">VirtualHost</directive>).</p>
75 <p>Premièrement, toutes les redirections sont traitées avant les
76 alias, et ainsi, une requête qui correspond à une directive
77 <directive module="mod_alias">Redirect</directive> ou <directive
78 module="mod_alias">RedirectMatch</directive> ne se verra jamais
79 appliquer d'alias. Deuxièmement, les alias et redirections sont
80 traités selon l'ordre dans lequel ils apparaissent dans le fichier
81 de configuration, seule la première correspondance étant prise en
84 <p>Ainsi, lorsqu'une ou plusieurs de ces directives s'appliquent au
85 même sous-répertoire, vous devez classer les chemins du plus précis
86 au moins précis afin que toutes les directives puissent
87 éventuellement s'appliquer, comme dans l'exemple suivant :</p>
90 Alias /foo/bar /baz<br />
94 <p>Si l'ordre des directives était inversé, la directive <directive
95 module="mod_alias">Alias</directive> ayant pour argument
96 <code>/foo</code> serait toujours appliquée avant la directive
97 <directive module="mod_alias">Alias</directive> ayant pour argument
98 <code>/foo/bar</code>, et cette dernière serait toujours
105 <description>Met en correspondance des URLs avec des chemins du système
106 de fichiers</description>
107 <syntax>Alias <var>chemin URL</var>
108 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
109 <contextlist><context>server config</context><context>virtual host</context>
114 <p>La directive <directive>Alias</directive> permet de stocker des
115 documents (destinés à être servis) dans des zones du système de
116 fichiers situées en dehors de l'arborescence du site web <directive
117 module="core">DocumentRoot</directive>. Les URLs dont le chemin
118 (décodé avec caractères %) commence par <var>chemin URL</var> seront
119 mises en correspondance avec des fichiers locaux dont le chemin
120 commence par <var>chemin répertoire</var>. Le <var>chemin URL</var>
121 est sensible à la casse, même sur les systèmes de fichiers
122 insensibles à la casse.</p>
124 <example><title>Exemple :</title>
125 Alias /image /ftp/pub/image
128 <p>Une requête pour <code>http://myserver/image/foo.gif</code> fera
129 renvoyer par le serveur le fichier
130 <code>/ftp/pub/image/foo.gif</code>. Seuls les éléments de chemin
131 complets sont testés ; ainsi l'alias précédent ne conviendra pas
132 pour une requête du style <code>http://myserver/imagefoo.gif</code>.
133 Pour des mises en correspondance plus complexes faisant intervenir
134 les expressions rationnelles, veuillez vous reporter à la directive
135 <directive module="mod_alias">AliasMatch</directive>.</p>
137 <p>Notez que si vous ajoutez un slash de fin au <var>chemin
138 URL</var>, vous devrez aussi ajouter un slash de fin au chemin de la
139 requête. Autrement dit, si vous définissez</p>
141 <dl><dd><code>Alias /icons/ /usr/local/apache/icons/</code></dd></dl>
143 <p>l'alias précédent ne s'appliquera pas à l'url
144 <code>/icons</code>.</p>
146 <p>Notez qu'il pourra s'avérer nécessaire de définir des sections
147 <directive type="section" module="core">Directory</directive>
148 supplémentaires qui couvriront la <em>destination</em> des alias.
149 Le traitement des alias intervenant avant le traitement des sections
150 <directive type="section" module="core">Directory</directive>,
151 seules les cibles des alias sont affectées (Notez cependant
152 que les sections <directive type="section"
153 module="core">Location</directive> sont traitées avant les alias, et
154 s'appliqueront donc).</p>
156 <p>En particulier, si vous créez un alias ayant pour cible un
157 répertoire situé en dehors de l'arborescence de votre site web
158 <directive module="core">DocumentRoot</directive>, vous devrez
159 probablement permettre explicitement l'accès à ce répertoire.</p>
161 <example><title>Exemple :</title>
162 Alias /image /ftp/pub/image<br />
163 <Directory /ftp/pub/image><br />
165 Order allow,deny<br />
175 <name>AliasMatch</name>
176 <description>Met en correspondance des URLs avec le système de fichiers
177 en faisant intervenir les expressions rationnelles</description>
178 <syntax>AliasMatch <var>regex</var>
179 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
180 <contextlist><context>server config</context><context>virtual host</context>
184 <p>Cette directive est identique à la directive <directive
185 module="mod_alias">Alias</directive>, mais fait appel aux <glossary
186 ref="regex">expressions rationnelles</glossary>, à la place d'une
187 simple mise en correspondance de préfixe. L'expression rationnelle
188 fournie est mise en correspondance avec le chemin URL, et si elle
189 correspond, le serveur va substituer toute partie de chemin
190 correspondant à l'expression entre parenthèses dans la chaîne
191 fournie et l'utiliser comme nom de fichier.
192 Par exemple, pour activer le répertoire <code>/icons</code>, on peut
196 AliasMatch ^/icons(.*) /usr/local/apache/icons$1
199 <p>On peut aussi construire un alias qui met en correspondance le
200 chemin URL sans tenir compte de la casse :</p>
203 AliasMatch (?i)^/image(.*) /ftp/pub/image$1
210 <name>Redirect</name>
211 <description>Envoie une redirection externe demandant au client
212 d'effectuer une autre requête avec une URL différente</description>
213 <syntax>Redirect [<var>statut</var>] <var>chemin URL</var>
214 <var>URL</var></syntax>
215 <contextlist><context>server config</context><context>virtual host</context>
216 <context>directory</context><context>.htaccess</context></contextlist>
217 <override>FileInfo</override>
220 <p>La directive Redirect permet de faire correspondre une ancienne
221 URL à une nouvelle en demandant au client d'aller chercher la ressource à
222 une autre localisation.</p>
224 <p>L'ancien <em>chemin URL</em> est un chemin sensible à la casse
225 (décodé à l'aide de caractères %) commençant par un slash. Les
226 chemins relatifs ne sont pas autorisés.</p>
228 <p>La nouvelle <em>URL</em>
229 peut être une URL absolue commençant par un protocole et un nom
230 d'hôte, mais on peut aussi utiliser un chemin URL commençant par un
231 slash, auquel cas le protocole et le nom d'hôte du serveur local
232 seront ajoutés.</p>
234 <p>Ensuite, toute requête commençant par <em>chemin URL</em> va
235 renvoyer une redirection au client vers l'<em>URL</em> cible. Tout
236 élément de chemin supplémentaire situé en aval du <em>chemin
237 URL</em> sera ajouté à l'URL cible.</p>
239 <example><title>Exemple :</title>
240 # Redirige vers une URL sur un serveur différent<br />
241 Redirect /service http://foo2.example.com/service<br />
243 # Redirige vers une URL sur le même serveur<br />
247 <p>Si le client effectue une requête pour l'URL
248 <code>http://example.com/service/foo.txt</code>, il lui sera demandé
249 d'en effectuer une autre pour l'URL
250 <code>http://foo2.example.com/service/foo.txt</code>. Seuls les
251 éléments de chemin complets sont testés, si bien que l'exemple
252 précédent ne s'appliquera pas à l'URL
253 <code>http://example.com/servicefoo.txt</code>. Pour des mises en
254 correspondance plus complexes faisant intervenir les expressions
255 rationnelles, veuillez vous reporter à la directive <directive
256 module="mod_alias">RedirectMatch</directive>.</p>
259 <note><title>Note</title>
260 <p>Les directives de redirection ont priorité sur les directives
261 Alias et ScriptAlias, quel que soit leur ordre d'apparition dans le
262 fichier de configuration.</p></note>
264 <p>Si aucun argument <var>statut</var> n'est spécifié, la
265 redirection sera temporaire (statut HTTP 302). Le client est alors
266 informé que la ressource a été temporairement déplacée. On peut
267 utiliser l'argument <var>statut</var> pour renvoyer d'autres codes
273 <dd>Renvoie un statut de redirection permanente (301), indiquant
274 que la ressource a été définitivement déplacée.</dd>
278 <dd>Renvoie un statut de redirection temporaire (302). C'est le
279 comportement par défaut.</dd>
283 <dd>Renvoie un statut "See Other" (303) indiquant que la ressource
284 a été remplacée par une autre.</dd>
288 <dd>Renvoie un statut "Gone" (410) indiquant que la ressource a
289 été définitivement supprimée. Lorsque ce statut est défini, on ne
290 doit pas utiliser l'argument <var>URL</var>.</dd>
293 <p>On peut renvoyer d'autres codes de statut en spécifiant le code
294 de statut numérique comme valeur de l'argument of <var>statut</var>.
295 Si le code de statut est compris entre 300 et 399, l'argument
296 <var>URL</var> doit être présent, sinon il ne doit pas être utilisé.
297 Notez que le statut doit être connu du code d'Apache (voir la
298 fonction <code>send_error_response</code> dans
299 http_protocol.c).</p>
301 <example><title>Exemple :</title>
302 Redirect permanent /un http://example.com/deux<br />
303 Redirect 303 /trois http://example.com/autre
310 <name>RedirectMatch</name>
311 <description>Envoie une redirection externe faisant appel aux
312 expressions rationnelles pour la mise en correspondance de l'URL
313 courante</description>
314 <syntax>RedirectMatch [<var>statut</var>] <var>regex</var>
315 <var>URL</var></syntax>
316 <contextlist><context>server config</context><context>virtual host</context>
317 <context>directory</context><context>.htaccess</context></contextlist>
318 <override>FileInfo</override>
321 <p>Cette directive est identique à la directive <directive
322 module="mod_alias">Redirect</directive>, mais fait appel aux
323 <glossary ref="regex">expressions rationnelles</glossary>, à la
324 place d'une simple mise en correspondance de préfixe. L'expression
325 rationnelle fournie est mise en correspondance avec le chemin URL,
326 et si elle correspond, le serveur va substituer toute partie de
327 chemin correspondante entre parenthèses dans la chaîne spécifiée et
328 l'utiliser comme nom de fichier. Par exemple, pour rediriger tous
329 les fichiers GIF vers les fichiers JPEG de même nom sur un autre
330 serveur, on peut utiliser :</p>
333 RedirectMatch (.*)\.gif$ http://www.autre-serveur.com$1.jpg
339 <name>RedirectTemp</name>
340 <description>Envoie une redirection externe temporaire demandant au
341 client d'effectuer une nouvelle requête avec une URL
342 différente</description>
343 <syntax>RedirectTemp <var>chemin URL</var> <var>URL</var></syntax>
344 <contextlist><context>server config</context><context>virtual host</context>
345 <context>directory</context><context>.htaccess</context></contextlist>
346 <override>FileInfo</override>
349 <p>Cette directive informe le client que la redirection n'est
350 que temporaire (statut 302). Son comportement est exactement le même
351 que celui de <code>Redirect temp</code>.</p>
356 <name>RedirectPermanent</name>
357 <description>Envoie une redirection externe permanente demandant au
358 client d'effectuer une nouvelle requête avec une URL
359 différente</description>
360 <syntax>RedirectPermanent <var>chemin URL</var> <var>URL</var></syntax>
361 <contextlist><context>server config</context><context>virtual host</context>
362 <context>directory</context><context>.htaccess</context></contextlist>
363 <override>FileInfo</override>
366 <p>Cette directive informe le client que la redirection est
367 permanente (statut 301). Son comportement est exactement le même
368 que celui de <code>Redirect permanent</code>.</p>
373 <name>ScriptAlias</name>
374 <description>Fait correspondre une URL à une zone du système de fichiers
375 et désigne la cible comme script CGI</description>
376 <syntax>ScriptAlias <var>chemin URL</var>
377 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
378 <contextlist><context>server config</context><context>virtual host</context>
382 <p>La directive <directive>ScriptAlias</directive> présente le même
383 comportement que la directive <directive
384 module="mod_alias">Alias</directive>, mais désigne en plus le
385 répertoire cible comme conteneur de scripts CGI qui seront traitées
386 par le gestionnaire cgi-script du module <module>mod_cgi</module>.
387 Les URLs dont le chemin URL sensible à la casse (décodé avec
388 caractères %) commence par <var>chemin URL</var> seront mises en
389 correspondance avec les scripts dont le chemin commence par le
390 second argument, qui est un chemin complet dans le système de
393 <example><title>Exemple :</title>
394 ScriptAlias /cgi-bin/ /web/cgi-bin/
397 <p>Une requête pour <code>http://mon-serveur/cgi-bin/foo</code>
398 ferait exécuter par le serveur le script
399 <code>/web/cgi-bin/foo</code>. Cette configuration est sensiblement
400 équivalente à :</p>
402 Alias /cgi-bin/ /web/cgi-bin/<br />
403 <Location /cgi-bin ><br />
405 SetHandler cgi-script<br />
406 Options +ExecCGI<br />
411 <p>Vous pouvez aussi utiliser <directive>ScriptAlias</directive>
412 avec un script ou gestionnaire de votre cru. Par exemple :</p>
415 ScriptAlias /cgi-bin/ /web/cgi-handler.pl
418 <p>Dans ce scénario, tous les fichiers faisant l'objet d'une requête
419 dans <code>/cgi-bin/</code> seront traités par le fichier que vous
420 avez spécifié, ce qui vous permet d'utiliser votre propre
421 gestionnaire. Vous pouvez l'utiliser comme enveloppe (wrapper) pour
422 les scripts CGI afin d'ajouter du contenu, ou autre action "maison".</p>
424 <note type="warning">Il est préférable d'éviter de placer les
425 scripts CGI dans l'arborescence de <directive
426 module="core">DocumentRoot</directive> afin d'éviter de révéler
427 accidentellement leur code source lors d'une modification de
428 configuration. On y parvient aisément avec
429 <directive>ScriptAlias</directive> en mettant en correspondance une
430 URL et en désignant la cible comme scripts CGI par la même occasion.
431 Si vous choisissez de placer vos scripts CGI dans un répertoire
432 accessible depuis le web, n'utilisez pas
433 <directive>ScriptAlias</directive>. Utilisez plutôt <directive
434 module="core" type="section">Directory</directive>, <directive
435 module="core">SetHandler</directive>, et <directive
436 module="core">Options</directive> comme dans l'exemple suivant :
438 <Directory /usr/local/apache2/htdocs/cgi-bin ><br />
440 SetHandler cgi-script<br />
441 Options ExecCGI<br />
445 Ceci est nécessaire car plusieurs <var>chemins URL</var> peuvent
446 correspondre à la même zone du système de fichiers, court-circuitant
447 ainsi la directive <directive>ScriptAlias</directive> et révélant le
448 code source des scripts CGI s'ils ne sont pas protégés par une
449 section <directive module="core">Directory</directive>.</note>
452 <seealso><a href="../howto/cgi.html">Tutoriel CGI</a></seealso>
456 <name>ScriptAliasMatch</name>
457 <description>Fait correspondre une URL à une zone du système de fichiers
458 en faisant appel aux expressions rationnelles et en désignant la cible
459 comme un script CGI</description>
460 <syntax>ScriptAliasMatch <var>regex</var>
461 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
462 <contextlist><context>server config</context><context>virtual host</context>
466 <p>Cette directive est équivalente à la directive <directive
467 module="mod_alias">ScriptAlias</directive>, mais fait appel aux
468 <glossary ref="regex">expressions rationnelles</glossary>, à la
469 place d'une simple mise en correspondance de préfixe. L'expression
470 rationnelle fournie est mise en correspondance avec le chemin URL,
471 et si elle correspond, le serveur va substituer toute partie de
472 chemin entre parenthèses dans la chaîne spécifiée et l'utiliser
473 comme nom de fichier. Par exemple, pour activer le répertoire
474 standard <code>/cgi-bin</code>, on peut utiliser :</p>
477 ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1