]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_alias.xml.fr
xforms
[apache] / docs / manual / mod / mod_alias.xml.fr
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1731335:1756706 (outdated) -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
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 <modulesynopsis metafile="mod_alias.xml.meta">
26
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>
31 <status>Base</status>
32 <sourcefile>mod_alias.c</sourcefile>
33 <identifier>alias_module</identifier>
34
35 <summary>
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
47     scripts CGI.</p>
48
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>
53
54     <p>Lorsque les directives <directive
55     module="mod_alias">Alias</directive>, <directive
56     module="mod_alias">ScriptAlias</directive> ou <directive
57     module="mod_alias">Redirect</directive> sont définies au sein d'une
58     section <directive type="section" module="core">Location</directive>
59     ou <directive type="section"
60     module="core">LocationMatch</directive>, vous pouvez utiliser la <a
61     href="../expr.html">syntaxe des expressions</a> pour manipuler l'URL
62     ou le chemin de destination.
63         </p>
64
65     <p><module>mod_alias</module> est conçu pour traiter des tâches
66     simples de manipulation d'URL. Pour des tâches plus complexes comme
67     la manipulation des chaînes d'arguments des requêtes, utilisez
68     plutôt les outils fournis par le module <module>mod_rewrite</module></p>
69
70 </summary>
71
72 <seealso><module>mod_rewrite</module></seealso> <seealso><a
73 href="../urlmapping.html">Mise en correspondance des URLs avec le
74 système de fichiers</a></seealso>
75
76 <section id="order"><title>Chronologie du traitement</title>
77
78     <p>Les alias et redirections apparaissant dans différents contextes
79     sont traités comme les autres directives en respectant les <a
80     href="../sections.html#mergin">règles de fusion</a> standards. Par
81     contre, ils sont traités selon une chronologie particulière
82     lorsqu'ils apparaissent dans le même contexte (par exemple, dans la
83     même section <directive type="section"
84     module="core">VirtualHost</directive>).</p>
85
86     <p>Premièrement, toutes les redirections sont traitées avant les
87     alias, et ainsi, une requête qui correspond à une directive
88     <directive module="mod_alias">Redirect</directive> ou <directive
89     module="mod_alias">RedirectMatch</directive> ne se verra jamais
90     appliquer d'alias. Deuxièmement, les alias et redirections sont
91     traités selon l'ordre dans lequel ils apparaissent dans le fichier
92     de configuration, seule la première correspondance étant prise en
93     compte.</p>
94
95     <p>Ainsi, lorsqu'une ou plusieurs de ces directives s'appliquent au
96     même sous-répertoire, vous devez classer les chemins du plus précis
97     au moins précis afin que toutes les directives puissent
98     éventuellement s'appliquer, comme dans l'exemple suivant :</p>
99
100     <highlight language="config">
101 Alias "/foo/bar" "/baz"
102 Alias "/foo" "/gaq"
103     </highlight>
104
105     <p>Si l'ordre des directives était inversé, la directive <directive
106     module="mod_alias">Alias</directive> ayant pour argument
107     <code>/foo</code> serait toujours appliquée avant la directive
108     <directive module="mod_alias">Alias</directive> ayant pour argument
109     <code>/foo/bar</code>, et cette dernière serait toujours
110     ignorée.</p>
111
112     <p>La définition de directives <directive
113     module="mod_alias">Alias</directive>, <directive
114     module="mod_alias">ScriptAlias</directive> ou <directive
115     module="mod_alias">Redirect</directive> au sein de sections
116     <directive type="section" module="core">Location</directive> ou
117     <directive type="section" module="core">LocationMatch</directive>
118     l'emporte sur d'autres définitions éventuelles de ces mêmes
119     directives au niveau de la configuration générale du serveur.</p>
120
121 </section>
122
123 <directivesynopsis>
124 <name>Alias</name>
125 <description>Met en correspondance des URLs avec des chemins du système
126 de fichiers</description>
127 <syntax>Alias [<var>chemin URL</var>]
128 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
129 <contextlist><context>server config</context><context>virtual host</context>
130 </contextlist>
131
132 <usage>
133
134     <p>La directive <directive>Alias</directive> permet de stocker des
135     documents (destinés à être servis) dans des zones du système de
136     fichiers situées en dehors de l'arborescence du site web <directive
137     module="core">DocumentRoot</directive>. Les URLs dont le chemin
138     (décodé avec caractères %) commence par <var>chemin URL</var> seront
139     mises en correspondance avec des fichiers locaux dont le chemin
140     commence par <var>chemin répertoire</var>. Le <var>chemin URL</var>
141     est sensible à la casse, même sur les systèmes de fichiers
142     insensibles à la casse.</p>
143
144     <highlight language="config">
145       Alias "/image" "/ftp/pub/image"
146     </highlight>
147
148     <p>Une requête pour <code>http://example.com/image/foo.gif</code> fera
149     renvoyer par le serveur le fichier
150     <code>/ftp/pub/image/foo.gif</code>. Seuls les éléments de chemin
151     complets sont testés ; ainsi l'alias précédent ne conviendra pas
152     pour une requête du style <code>http://example.com/imagefoo.gif</code>.
153     Pour des mises en correspondance plus complexes faisant intervenir
154     les expressions rationnelles, veuillez vous reporter à la directive
155     <directive module="mod_alias">AliasMatch</directive>.</p>
156
157     <p>Notez que si vous ajoutez un slash de fin au <var>chemin
158     URL</var>, vous devrez aussi ajouter un slash de fin au chemin de la
159     requête. Autrement dit, si vous définissez</p>
160
161     <highlight language="config">
162       Alias "/icons/" "/usr/local/apache/icons/"
163     </highlight>
164
165     <p>l'alias précédent ne s'appliquera pas à l'URL
166     <code>/icons</code> à cause de l'absence du slash final. Ainsi, si
167     le slash final est absent du <var>chemin de l'URL</var>, il doit
168     aussi l'être du <var>chemin du fichier</var>.</p>
169
170     <p>Notez qu'il pourra s'avérer nécessaire de définir des sections
171     <directive type="section" module="core">Directory</directive>
172     supplémentaires qui couvriront la  <em>destination</em> des alias.
173     Le traitement des alias intervenant avant le traitement des sections
174     <directive type="section" module="core">Directory</directive>,
175     seules les cibles des alias sont affectées (Notez cependant
176     que les sections <directive type="section"
177     module="core">Location</directive> sont traitées avant les alias, et
178     s'appliqueront donc).</p>
179
180     <p>En particulier, si vous créez un alias ayant pour cible un
181     répertoire situé en dehors de l'arborescence de votre site web
182     <directive module="core">DocumentRoot</directive>, vous devrez
183     probablement permettre explicitement l'accès à ce répertoire.</p>
184
185     <highlight language="config">
186 Alias "/image" "/ftp/pub/image"
187 &lt;Directory "/ftp/pub/image"&gt;
188     Require all granted
189 &lt;/Directory&gt;
190     </highlight>
191
192     <p>Le nombre de slashes dans le paramètre <var>chemin URL</var> doit
193     correspondre au nombre de slashes dans le chemin URL de la requête.</p>
194
195     <p>Si la directive <directive>Alias</directive> est définie au sein
196     d'une section <directive type="section"
197     module="core">Location</directive> ou <directive type="section"
198     module="core">LocationMatch</directive>, <var>chemin URL</var> est
199     omis et <var>chemin fichier</var> est interprété en utilisant la <a
200     href="../expr.html">syntaxe des expressions</a>.<br />
201     Cette syntaxe est disponible à partir de la version 2.4.19 du
202     serveur HTTP Apache.</p>
203
204     <highlight language="config">
205 &lt;Location "/image"&gt;
206     Alias "/ftp/pub/image"
207 &lt;/Location&gt;
208 &lt;LocationMatch "/error/(?&lt;NUMBER&gt;[0-9]+)"&gt;
209     Alias "/usr/local/apache/errors/%{env:MATCH_NUMBER}.html"
210 &lt;/LocationMatch&gt;
211     </highlight>
212
213 </usage>
214 </directivesynopsis>
215
216 <directivesynopsis>
217 <name>AliasMatch</name>
218 <description>Met en correspondance des URLs avec le système de fichiers
219 en faisant intervenir les expressions rationnelles</description>
220 <syntax>AliasMatch <var>regex</var>
221 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
222 <contextlist><context>server config</context><context>virtual host</context>
223 </contextlist>
224
225 <usage>
226     <p>Cette directive est identique à la directive <directive
227     module="mod_alias">Alias</directive>, mais fait appel aux <glossary
228     ref="regex">expressions rationnelles</glossary>, à la place d'une
229     simple mise en correspondance de préfixe. L'expression rationnelle
230     fournie est mise en correspondance avec le chemin URL, et si elle
231     correspond, le serveur va substituer toute partie de chemin
232     correspondant à l'expression entre parenthèses dans la chaîne
233     fournie et l'utiliser comme nom de fichier.
234     Par exemple, pour activer le répertoire <code>/icons</code>, on peut
235     utiliser :</p>
236
237     <highlight language="config">
238       AliasMatch "^/icons(.*)" "/usr/local/apache/icons$1$2"
239     </highlight>
240
241     <p>Toute la puissance des <glossary ref="regex">expressions
242     rationnelles</glossary> peut être mise à contribution. Par exemple,
243     il est possible de construire un alias avec un modèle de chemin URL
244     insensible à la casse :</p>
245
246     <highlight language="config">
247       AliasMatch "(?i)^/image(.*)" "/ftp/pub/image$1"
248     </highlight>
249
250     <p>Il existe une différence subtile entre <directive
251     module="mod_alias">Alias</directive> et <directive
252     module="mod_alias">AliasMatch</directive> : <directive
253     module="mod_alias">Alias</directive> copie automatiquement toute
254     portion supplémentaire de l'URI située après la partie du modèle qui
255     correspond, à la fin du chemin du fichier de la partie droite, alors
256     que <directive module="mod_alias">AliasMatch</directive> ne le fait
257     pas. Cela signifie qu'il sera préférable dans la plupart des cas de
258     comparer l'expression rationnelle du modèle à la totalité de l'URI
259     de la requête, et d'utiliser les substitutions dans la partie
260     droite.</p>
261
262     <p>En d'autres termes, le remplacement d'<directive
263     module="mod_alias">Alias</directive> par <directive
264     module="mod_alias">AliasMatch</directive> ne produira pas le même
265     résultat. Au minimum, vous devez ajouter <code>^</code> au début de
266     l'expression rationnelle, <code>(.*)$</code> à sa fin et
267     <code>$1</code> à la fin de la chaîne de remplacement.</p>
268
269     <p>Par exemple, supposons que nous voulions reformuler cet alias
270     avec AliasMatch :</p>
271
272     <highlight language="config">
273       Alias "/image/" "/ftp/pub/image/"
274     </highlight>
275
276     <p>Le simple remplacement d'Alias par AliasMatch ne produira pas le
277     même résultat. Ainsi, ce qui suit va rediriger toutes les requêtes
278     qui contiennent /image/ vers /ftp/pub/image/ :</p>
279
280     <highlight language="config">
281       AliasMatch "/image/" "/ftp/pub/image/"
282     </highlight>
283
284     <p>Voici la directive AliasMatch qui produira le même résultat que
285     la directive Alias ci-dessus :</p>
286
287     <highlight language="config">
288       AliasMatch "^/image/(.*)$" "/ftp/pub/image/$1"
289     </highlight>
290
291     <p>Bien entendu, il n'y a aucune raison d'utiliser <directive
292     module="mod_alias">AliasMatch</directive> dans le cas où <directive
293     module="mod_alias">Alias</directive> suffit. <directive
294     module="mod_alias">AliasMatch</directive> vous permet d'effectuer
295     des choses beaucoup plus sophistiquées. Par exemple, vous pouvez
296     servir différentes sortes de fichiers à partir de répertoires
297     différents :</p>
298
299     <highlight language="config">
300       AliasMatch "^/image/(.*)\.jpg$" "/fichiers/jpg.images/$1.jpg"
301       AliasMatch "^/image/(.*)\.gif$" "/fichiers/gif.images/$1.gif"
302     </highlight>
303
304     <p>Les éventuels slashes de tête multiples seront supprimés par le
305     serveur avant que les directives de ce module n'effectuent des
306     comparaisons avec le chemin URL de la requête.
307     </p>
308
309 </usage>
310 </directivesynopsis>
311
312 <directivesynopsis>
313 <name>Redirect</name>
314 <description>Envoie une redirection externe demandant au client
315 d'effectuer une autre requête avec une URL différente</description>
316 <syntax>Redirect [<var>état</var>] [<var>chemin URL</var>]
317 <var>URL</var></syntax>
318 <contextlist><context>server config</context><context>virtual host</context>
319 <context>directory</context><context>.htaccess</context></contextlist>
320 <override>FileInfo</override>
321
322 <usage>
323     <p>La directive Redirect permet de faire correspondre une ancienne
324     URL à une nouvelle en demandant au client d'aller chercher la ressource à
325     une autre localisation.</p>
326
327     <p>L'ancien <em>chemin URL</em> est un chemin sensible à la casse
328     (décodé à l'aide de caractères %) commençant par un slash. Les
329     chemins relatifs ne sont pas autorisés.</p>
330
331     <p>La nouvelle <em>URL</em>
332     peut être une URL absolue commençant par un protocole et un nom
333     d'hôte, mais on peut aussi utiliser un chemin URL commençant par un
334     slash, auquel cas le protocole et le nom d'hôte du serveur local
335     seront ajoutés.</p>
336
337     <p>Ensuite, toute requête commençant par <em>chemin URL</em> va
338     renvoyer une redirection au client vers l'<em>URL</em> cible. Tout
339     élément de chemin supplémentaire situé en aval du <em>chemin
340     URL</em> sera ajouté à l'URL cible.</p>
341
342     <highlight language="config">
343 # Redirige vers une URL sur un serveur différent
344 Redirect "/service" "http://foo2.example.com/service"
345
346 # Redirige vers une URL sur le même serveur
347 Redirect "/one" "/two"
348     </highlight>
349
350     <p>Si le client effectue une requête pour l'URL
351     <code>http://example.com/service/foo.txt</code>, il lui sera demandé
352     d'en effectuer une autre pour l'URL
353     <code>http://foo2.example.com/service/foo.txt</code>. Ceci concerne
354     les requêtes avec paramètres <code>GET</code>, comme
355     <code>http://example.com/service/foo.pl?q=23&amp;a=42</code>, qui
356     seront redirigées vers
357     <code>http://foo2.example.com/service/foo.pl?q=23&amp;a=42</code>.
358     Notez que les <code>POST</code>s seront ignorés.<br />
359     Seuls les
360     éléments de chemin complets sont testés, si bien que l'exemple
361     précédent ne s'appliquera pas à l'URL
362     <code>http://example.com/servicefoo.txt</code>. Pour des mises en
363     correspondance plus complexes utilisant la <a
364     href="../expr.html">syntaxe des expressions</a>, ne spécifiez pas
365     d'argument <var>chemin URL</var> comme décrit ci-dessous. En outre,
366     pour une mise en correspondance en utilisant les expressions
367     rationnelles, veuillez vous reporter à la directive <directive
368     module="mod_alias">RedirectMatch</directive>.</p>
369
370
371     <note><title>Note</title>
372     <p>Les directives de redirection ont priorité sur les directives
373     Alias et ScriptAlias, quel que soit leur ordre d'apparition dans le
374     fichier de configuration. Les directives Redirect définies au sein
375     d'une section Location l'emportent sur les directives Redirect et
376     Alias comportant un argument <var>chemin URL</var>.</p></note>
377
378     <p>Si aucun argument <var>état</var> n'est spécifié, la
379     redirection sera temporaire (code HTTP 302). Le client est alors
380     informé que la ressource a été temporairement déplacée. On peut
381     utiliser l'argument <var>état</var> pour renvoyer d'autres codes HTTP :</p>
382
383     <dl>
384       <dt>permanent</dt>
385
386       <dd>Renvoie un code de redirection permanente (301), indiquant
387       que la ressource a été définitivement déplacée.</dd>
388
389       <dt>temp</dt>
390
391       <dd>Renvoie un code de redirection temporaire (302). C'est le
392       comportement par défaut.</dd>
393
394       <dt>seeother</dt>
395
396       <dd>Renvoie un code "See Other" (303) indiquant que la ressource
397       a été remplacée par une autre.</dd>
398
399       <dt>gone</dt>
400
401       <dd>Renvoie un code "Gone" (410) indiquant que la ressource a
402       été définitivement supprimée. Lorsque
403       ce code est utilisé, on ne
404       doit pas utiliser l'argument <var>URL</var>.</dd>
405     </dl>
406
407     <p>On peut renvoyer d'autres codes en spécifiant le code
408     numérique comme valeur de l'argument of <var>état</var>.
409     Si le code est compris entre 300 et 399, l'argument
410     <var>URL</var> doit être présent. Si le code
411     n'est <em>pas</em> compris entre 300 et 399, l'argument
412     <var>URL</var> ne doit pas apparaître. Le code doit être un code
413     HTTP valide, connu du serveur HTTP Apache (voir la
414     fonction <code>send_error_response</code> dans
415     http_protocol.c).</p>
416
417     <highlight language="config">
418 Redirect permanent "/one" "http://example.com/two"
419 Redirect 303 "/three" "http://example.com/other"
420     </highlight>
421
422     <p>Si une directive <directive>Redirect</directive> est définie au
423     sein d'une section <directive type="section"
424     module="core">Location</directive> ou <directive type="section"
425     module="core">LocationMatch</directive> et si l'argument <var>chemin
426     URL</var> est omis, l'argument <var>URL</var> sera interprété en
427     utilisant la <a href="../expr.html">syntaxe des expressions</a>.<br />
428     Cette syntaxe est disponible à partir de la version 2.4.19 du
429     serveur HTTP Apache.</p>
430
431     <highlight language="config">
432 &lt;Location "/one"&gt;
433     Redirect permanent "http://example.com/two"
434 &lt;/Location&gt;
435 &lt;Location "/three"&gt;
436     Redirect 303 "http://example.com/other"
437 &lt;/Location&gt;
438 &lt;LocationMatch "/error/(?&lt;NUMBER&gt;[0-9]+)"&gt;
439     Redirect permanent "http://example.com/errors/%{env:MATCH_NUMBER}.html"
440 &lt;/LocationMatch&gt;
441     </highlight>
442
443 </usage>
444 </directivesynopsis>
445
446 <directivesynopsis>
447 <name>RedirectMatch</name>
448 <description>Envoie une redirection externe faisant appel aux
449 expressions rationnelles pour la mise en correspondance de l'URL
450 courante</description>
451 <syntax>RedirectMatch [<var>état</var>] <var>regex</var>
452 <var>URL</var></syntax>
453 <contextlist><context>server config</context><context>virtual host</context>
454 <context>directory</context><context>.htaccess</context></contextlist>
455 <override>FileInfo</override>
456
457 <usage>
458     <p>Cette directive est identique à la directive <directive
459     module="mod_alias">Redirect</directive>, mais fait appel aux
460     <glossary ref="regex">expressions rationnelles</glossary>, à la
461     place d'une simple mise en correspondance de préfixe. L'expression
462     rationnelle fournie est mise en correspondance avec le chemin URL,
463     et si elle correspond, le serveur va substituer toute partie de
464     chemin correspondante entre parenthèses dans la chaîne spécifiée et
465     l'utiliser comme nom de fichier. Par exemple, pour rediriger tous
466     les fichiers GIF vers les fichiers JPEG de même nom sur un autre
467     serveur, on peut utiliser :</p>
468
469     <highlight language="config">
470       RedirectMatch "(.*)\.gif$" "http://autre.example.com$1.jpg"
471     </highlight>
472
473     <p>Les remarques à propos de la différence entre <directive
474     module="mod_alias">Alias</directive> et <directive
475     module="mod_alias">AliasMatch</directive> s'appliquent aussi à la
476     différence entre les directives <directive
477     module="mod_alias">Redirect</directive> et <directive
478     module="mod_alias">RedirectMatch</directive>. Voir la directive
479     <directive module="mod_alias">AliasMatch</directive> pour plus de
480     détails.</p>
481
482 </usage>
483 </directivesynopsis>
484
485 <directivesynopsis>
486 <name>RedirectTemp</name>
487 <description>Envoie une redirection externe temporaire demandant au
488 client d'effectuer une nouvelle requête avec une URL
489 différente</description>
490 <syntax>RedirectTemp <var>chemin URL</var> <var>URL</var></syntax>
491 <contextlist><context>server config</context><context>virtual host</context>
492 <context>directory</context><context>.htaccess</context></contextlist>
493 <override>FileInfo</override>
494
495 <usage>
496     <p>Cette directive informe le client que la redirection n'est
497     que temporaire (code 302). Son comportement est exactement le même
498     que celui de <code>Redirect temp</code>.</p>
499 </usage>
500 </directivesynopsis>
501
502 <directivesynopsis>
503 <name>RedirectPermanent</name>
504 <description>Envoie une redirection externe permanente demandant au
505 client d'effectuer une nouvelle requête avec une URL
506 différente</description>
507 <syntax>RedirectPermanent <var>chemin URL</var> <var>URL</var></syntax>
508 <contextlist><context>server config</context><context>virtual host</context>
509 <context>directory</context><context>.htaccess</context></contextlist>
510 <override>FileInfo</override>
511
512 <usage>
513     <p>Cette directive informe le client que la redirection est
514     permanente (code 301). Son comportement est exactement le même
515     que celui de <code>Redirect permanent</code>.</p>
516 </usage>
517 </directivesynopsis>
518
519 <directivesynopsis>
520 <name>ScriptAlias</name>
521 <description>Fait correspondre une URL à une zone du système de fichiers
522 et désigne la cible comme script CGI</description>
523 <syntax>ScriptAlias [<var>chemin URL</var>]
524 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
525 <contextlist><context>server config</context><context>virtual host</context>
526 <context>directory</context>
527 </contextlist>
528
529 <usage>
530     <p>La directive <directive>ScriptAlias</directive> présente le même
531     comportement que la directive <directive
532     module="mod_alias">Alias</directive>, mais désigne en plus le
533     répertoire cible comme conteneur de scripts CGI qui seront traitées
534     par le gestionnaire cgi-script du module <module>mod_cgi</module>.
535     Les URLs dont le chemin URL sensible à la casse (décodé avec
536     caractères %) commence par <var>chemin URL</var> seront mises en
537     correspondance avec les scripts dont le chemin commence par le
538     second argument, qui est un chemin complet dans le système de
539     fichiers local.</p>
540
541     <highlight language="config">
542       ScriptAlias "/cgi-bin/" "/web/cgi-bin/"
543     </highlight>
544
545     <p>Une requête pour <code>http://example.com/cgi-bin/foo</code>
546     ferait exécuter par le serveur le script
547     <code>/web/cgi-bin/foo</code>. Cette configuration est sensiblement
548     équivalente à :</p>
549     <highlight language="config">
550 Alias "/cgi-bin/" "/web/cgi-bin/"
551 &lt;Location "/cgi-bin"&gt;
552     SetHandler cgi-script
553     Options +ExecCGI
554 &lt;/Location&gt;
555     </highlight>
556
557         <p>Vous pouvez aussi utiliser <directive>ScriptAlias</directive>
558         avec un script ou gestionnaire de votre cru. Par exemple :</p>
559
560         <highlight language="config">
561           ScriptAlias "/cgi-bin/" "/web/cgi-handler.pl"
562     </highlight>
563
564     <p>Dans ce scénario, tous les fichiers faisant l'objet d'une requête
565     dans <code>/cgi-bin/</code> seront traités par le fichier que vous
566     avez spécifié, ce qui vous permet d'utiliser votre propre
567     gestionnaire. Vous pouvez l'utiliser comme enveloppe (wrapper) pour
568     les scripts CGI afin d'ajouter du contenu, ou autre action "maison".</p>
569
570     <note type="warning">Il est préférable d'éviter de placer les
571     scripts CGI dans l'arborescence de <directive
572     module="core">DocumentRoot</directive> afin d'éviter de révéler
573     accidentellement leur code source lors d'une modification de
574     configuration. On y parvient aisément avec
575     <directive>ScriptAlias</directive> en mettant en correspondance une
576     URL et en désignant la cible comme scripts CGI par la même occasion.
577     Si vous choisissez de placer vos scripts CGI dans un répertoire
578     accessible depuis le web, n'utilisez pas
579     <directive>ScriptAlias</directive>. Utilisez plutôt <directive
580     module="core" type="section">Directory</directive>, <directive
581     module="core">SetHandler</directive>, et <directive
582     module="core">Options</directive> comme dans l'exemple suivant :
583     <highlight language="config">
584 &lt;Directory "/usr/local/apache2/htdocs/cgi-bin"&gt;
585     SetHandler cgi-script
586     Options ExecCGI
587 &lt;/Directory&gt;
588     </highlight>
589     Ceci est nécessaire car plusieurs <var>chemins URL</var> peuvent
590     correspondre à la même zone du système de fichiers, court-circuitant
591     ainsi la directive <directive>ScriptAlias</directive> et révélant le
592     code source des scripts CGI s'ils ne sont pas protégés par une
593     section <directive module="core">Directory</directive>.</note>
594
595     <p>Si la directive <directive>ScriptAlias</directive> est définie au
596     sein d'une section <directive type="section"
597     module="core">Location</directive> ou <directive type="section"
598     module="core">LocationMatch</directive> et si l'argument <var>chemin
599     URL</var> est omis, l'argument <var>URL</var> sera interprété en
600     utilisant la <a href="../expr.html">syntaxe des expressions</a>.<br />
601     Cette syntaxe est disponible à partir de la version 2.4.19 du
602     serveur HTTP Apache.</p>
603
604     <highlight language="config">
605 &lt;Location "/cgi-bin"&gt;
606     ScriptAlias "/web/cgi-bin/"
607 &lt;/Location&gt;
608 &lt;LocationMatch "/cgi-bin/errors/(?&lt;NUMBER&gt;[0-9]+)"&gt;
609     ScriptAlias "/web/cgi-bin/errors/%{env:MATCH_NUMBER}.cgi"
610 &lt;/LocationMatch&gt;
611     </highlight>
612
613 </usage>
614 <seealso><a href="../howto/cgi.html">Tutoriel CGI</a></seealso>
615 </directivesynopsis>
616
617 <directivesynopsis>
618 <name>ScriptAliasMatch</name>
619 <description>Fait correspondre une URL à une zone du système de fichiers
620 en faisant appel aux expressions rationnelles et en désignant la cible
621 comme un script CGI</description>
622 <syntax>ScriptAliasMatch <var>regex</var>
623 <var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
624 <contextlist><context>server config</context><context>virtual host</context>
625 </contextlist>
626
627 <usage>
628     <p>Cette directive est équivalente à la directive <directive
629     module="mod_alias">ScriptAlias</directive>, mais fait appel aux
630     <glossary ref="regex">expressions rationnelles</glossary>, à la
631     place d'une simple mise en correspondance de préfixe. L'expression
632     rationnelle fournie est mise en correspondance avec le chemin URL,
633     et si elle correspond, le serveur va substituer toute partie de
634     chemin entre parenthèses dans la chaîne spécifiée et l'utiliser
635     comme nom de fichier. Par exemple, pour activer le répertoire
636     standard <code>/cgi-bin</code>, on peut utiliser :</p>
637
638     <highlight language="config">
639       ScriptAliasMatch "^/cgi-bin(.*)" "/usr/local/apache/cgi-bin$1"
640     </highlight>
641
642     <p>Comme dans le cas d'AliasMatch, toute la puissance des <glossary
643     ref="rexex">expressions rationnelles</glossary> peut être mise à
644     contribution. Par exemple, il est possible de construire un alias
645     avec une comparaison du modèle du chemin URL insensible à la casse :</p>
646
647     <highlight language="config">
648       ScriptAliasMatch "(?i)^/cgi-bin(.*)" "/usr/local/apache/cgi-bin$1"
649     </highlight>
650
651     <p>Les remarques à propos de la différence entre <directive
652     module="mod_alias">Alias</directive> et <directive
653     module="mod_alias">AliasMatch</directive> s'appliquent aussi à la
654     différence entre les directives <directive
655     module="mod_alias">ScriptAlias</directive> et <directive
656     module="mod_alias">ScriptAliasMatch</directive>. Voir la directive
657     <directive module="mod_alias">AliasMatch</directive> pour plus de
658     détails.</p>
659
660 </usage>
661 </directivesynopsis>
662
663 </modulesynopsis>