mod_alias.xml.fr revision 8cf362f300047e397e95acfab0b69ef7a6f3d93c
<?xml version="1.0"?>
<!-- English Revision : 1055611 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<modulesynopsis metafile="mod_alias.xml.meta">
<name>mod_alias</name>
<description>Permet d'atteindre différentes parties du système de
fichiers depuis l'arborescence des documents du site web, ainsi que la
redirection d'URL</description>
<status>Base</status>
<identifier>alias_module</identifier>
<summary>
<p>Les directives fournies par ce module permettent de manipuler et
de contrôler les URLs à l'arrivée des requêtes sur le serveur. Les
directives <directive module="mod_alias">Alias</directive> et
<directive module="mod_alias">ScriptAlias</directive> permettent de
faire correspondre des URLs avec des chemins du système de fichiers.
Ceci permet de servir des contenus qui ne sont pas situés dans
l'arborescence de <directive
module="core">DocumentRoot</directive> comme s'ils y étaient
réellement. La directive <directive
module="mod_alias">ScriptAlias</directive> a pour effet
supplémentaire de marquer le répertoire cible comme conteneur de
scripts CGI.</p>
<p>Les directives <directive module="mod_alias">Redirect</directive>
indiquent aux clients qu'ils doivent effectuer une nouvelle requête
avec une URL différente. Elles sont souvent utilisées lorsqu'une
ressource a été déplacée.</p>
<p><module>mod_alias</module> est conçu pour traiter des tâches
simples de manipulation d'URL. Pour des tâches plus complexes comme
la manipulation des chaînes d'arguments des requêtes, utilisez
plutôt les outils fournis par le module <module>mod_rewrite</module></p>
</summary>
<seealso><module>mod_rewrite</module></seealso> <seealso><a
href="/urlmapping.html">Mise en correspondance des URLs avec le
système de fichiers</a></seealso>
<section id="order"><title>Chronologie du traitement</title>
<p>Les alias et redirections apparaissant dans différents contextes
sont traités comme les autres directives en respectant les <a
href="/sections.html#mergin">règles de fusion</a> standards. Par
contre, ils sont traités selon une chronologie particulière
lorsqu'ils apparaissent dans le même contexte (par exemple, dans la
même section <directive type="section"
module="core">VirtualHost</directive>).</p>
<p>Premièrement, toutes les redirections sont traitées avant les
alias, et ainsi, une requête qui correspond à une directive
<directive module="mod_alias">Redirect</directive> ou <directive
module="mod_alias">RedirectMatch</directive> ne se verra jamais
appliquer d'alias. Deuxièmement, les alias et redirections sont
traités selon l'ordre dans lequel ils apparaissent dans le fichier
de configuration, seule la première correspondance étant prise en
compte.</p>
<p>Ainsi, lorsqu'une ou plusieurs de ces directives s'appliquent au
même sous-répertoire, vous devez classer les chemins du plus précis
au moins précis afin que toutes les directives puissent
éventuellement s'appliquer, comme dans l'exemple suivant :</p>
<example>
Alias /foo /gaq
</example>
<p>Si l'ordre des directives était inversé, la directive <directive
module="mod_alias">Alias</directive> ayant pour argument
<code>/foo</code> serait toujours appliquée avant la directive
<directive module="mod_alias">Alias</directive> ayant pour argument
ignorée.</p>
</section>
<directivesynopsis>
<name>Alias</name>
<description>Met en correspondance des URLs avec des chemins du système
de fichiers</description>
<syntax>Alias <var>chemin URL</var>
<var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>La directive <directive>Alias</directive> permet de stocker des
documents (destinés à être servis) dans des zones du système de
fichiers situées en dehors de l'arborescence du site web <directive
module="core">DocumentRoot</directive>. Les URLs dont le chemin
(décodé avec caractères %) commence par <var>chemin URL</var> seront
mises en correspondance avec des fichiers locaux dont le chemin
commence par <var>chemin répertoire</var>. Le <var>chemin URL</var>
est sensible à la casse, même sur les systèmes de fichiers
insensibles à la casse.</p>
<example><title>Exemple :</title>
</example>
renvoyer par le serveur le fichier
complets sont testés ; ainsi l'alias précédent ne conviendra pas
Pour des mises en correspondance plus complexes faisant intervenir
les expressions rationnelles, veuillez vous reporter à la directive
<directive module="mod_alias">AliasMatch</directive>.</p>
<p>Notez que si vous ajoutez un slash de fin au <var>chemin
URL</var>, vous devrez aussi ajouter un slash de fin au chemin de la
requête. Autrement dit, si vous définissez</p>
<p>l'alias précédent ne s'appliquera pas à l'url
<code>/icons</code> à cause de l'absence du slash final. Ainsi, si
le slash final est absent du <var>chemin de l'URL</var>, il doit
aussi l'être du <var>chemin du fichier</var>.</p>
<p>Notez qu'il pourra s'avérer nécessaire de définir des sections
<directive type="section" module="core">Directory</directive>
supplémentaires qui couvriront la <em>destination</em> des alias.
Le traitement des alias intervenant avant le traitement des sections
<directive type="section" module="core">Directory</directive>,
seules les cibles des alias sont affectées (Notez cependant
que les sections <directive type="section"
module="core">Location</directive> sont traitées avant les alias, et
s'appliqueront donc).</p>
<p>En particulier, si vous créez un alias ayant pour cible un
répertoire situé en dehors de l'arborescence de votre site web
<directive module="core">DocumentRoot</directive>, vous devrez
probablement permettre explicitement l'accès à ce répertoire.</p>
<example><title>Exemple :</title>
<indent>
Require all granted<br />
</indent>
</Directory>
</example>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>AliasMatch</name>
<description>Met en correspondance des URLs avec le système de fichiers
en faisant intervenir les expressions rationnelles</description>
<syntax>AliasMatch <var>regex</var>
<var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>Cette directive est identique à la directive <directive
module="mod_alias">Alias</directive>, mais fait appel aux <glossary
ref="regex">expressions rationnelles</glossary>, à la place d'une
simple mise en correspondance de préfixe. L'expression rationnelle
fournie est mise en correspondance avec le chemin URL, et si elle
correspond, le serveur va substituer toute partie de chemin
correspondant à l'expression entre parenthèses dans la chaîne
fournie et l'utiliser comme nom de fichier.
Par exemple, pour activer le répertoire <code>/icons</code>, on peut
utiliser :</p>
<example>
</example>
<p>Toute la puissance des <glossary ref="regex">expressions
rationnelles</glossary> peut être mise à contribution. Par exemple,
il est possible de construire un alias avec un modèle de chemin URL
insensible à la casse :</p>
<example>
</example>
<p>Il existe une différence subtile entre <directive
module="mod_alias">Alias</directive> et <directive
module="mod_alias">AliasMatch</directive> : <directive
module="mod_alias">Alias</directive> copie automatiquement toute
portion supplémentaire de l'URI située après la partie du modèle qui
correspond, à la fin du chemin du fichier de la partie droite, alors
que <directive module="mod_alias">AliasMatch</directive> ne le fait
pas. Cela signifie qu'il sera préférable dans la plupart des cas de
comparer l'expression rationnelle du modèle à la totalité de l'URI
de la requête, et d'utiliser les substitutions dans la partie
droite.</p>
<p>En d'autres termes, le remplacement d'<directive
module="mod_alias">Alias</directive> par <directive
module="mod_alias">AliasMatch</directive> ne produira pas le même
résultat. Au minimum, vous devez ajouter <code>^</code> au début de
l'expression rationnelle, <code>(.*)$</code> à sa fin et
<code>$1</code> à la fin de la chaîne de remplacement.</p>
<p>Par exemple, supposons que nous voulions reformuler cet alias
avec AliasMatch :</p>
<example>
</example>
<p>Le simple remplacement d'Alias par AliasMatch ne produira pas le
même résultat. Ainsi, ce qui suit va rediriger toutes les requêtes
<example>
</example>
<p>Voici la directive AliasMatch qui produira le même résultat que
la directive Alias ci-dessus :</p>
<example>
</example>
<p>Bien entendu, il n'y a aucune raison d'utiliser <directive
module="mod_alias">AliasMatch</directive> dans le cas où <directive
module="mod_alias">Alias</directive> suffit. <directive
module="mod_alias">AliasMatch</directive> vous permet d'effectuer
des choses beaucoup plus sophistiquées. Par exemple, vous pouvez
servir différentes sortes de fichiers à partir de répertoires
différents :</p>
<example>
</example>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>Redirect</name>
<description>Envoie une redirection externe demandant au client
d'effectuer une autre requête avec une URL différente</description>
<syntax>Redirect [<var>statut</var>] <var>chemin URL</var>
<var>URL</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>La directive Redirect permet de faire correspondre une ancienne
URL à une nouvelle en demandant au client d'aller chercher la ressource à
une autre localisation.</p>
<p>L'ancien <em>chemin URL</em> est un chemin sensible à la casse
(décodé à l'aide de caractères %) commençant par un slash. Les
chemins relatifs ne sont pas autorisés.</p>
<p>La nouvelle <em>URL</em>
peut être une URL absolue commençant par un protocole et un nom
d'hôte, mais on peut aussi utiliser un chemin URL commençant par un
slash, auquel cas le protocole et le nom d'hôte du serveur local
seront ajoutés.</p>
<p>Ensuite, toute requête commençant par <em>chemin URL</em> va
renvoyer une redirection au client vers l'<em>URL</em> cible. Tout
élément de chemin supplémentaire situé en aval du <em>chemin
URL</em> sera ajouté à l'URL cible.</p>
<example><title>Exemple :</title>
# Redirige vers une URL sur un serveur différent<br />
Redirect /service http://foo2.example.com/service<br />
<br />
# Redirige vers une URL sur le même serveur<br />
Redirect /one /two
</example>
<p>Si le client effectue une requête pour l'URL
d'en effectuer une autre pour l'URL
les requêtes avec paramètres <code>GET</code>, comme
seront redirigées vers
Notez que les <code>POST</code>s seront ignorés.<br />
Seuls les
éléments de chemin complets sont testés, si bien que l'exemple
précédent ne s'appliquera pas à l'URL
correspondance plus complexes faisant intervenir les expressions
rationnelles, veuillez vous reporter à la directive <directive
module="mod_alias">RedirectMatch</directive>.</p>
<note><title>Note</title>
<p>Les directives de redirection ont priorité sur les directives
Alias et ScriptAlias, quel que soit leur ordre d'apparition dans le
fichier de configuration.</p></note>
<p>Si aucun argument <var>statut</var> n'est spécifié, la
redirection sera temporaire (statut HTTP 302). Le client est alors
informé que la ressource a été temporairement déplacée. On peut
utiliser l'argument <var>statut</var> pour renvoyer d'autres codes
de statut HTTP :</p>
<dl>
<dt>permanent</dt>
<dd>Renvoie un statut de redirection permanente (301), indiquant
que la ressource a été définitivement déplacée.</dd>
<dt>temp</dt>
<dd>Renvoie un statut de redirection temporaire (302). C'est le
comportement par défaut.</dd>
<dt>seeother</dt>
<dd>Renvoie un statut "See Other" (303) indiquant que la ressource
a été remplacée par une autre.</dd>
<dt>gone</dt>
<dd>Renvoie un statut "Gone" (410) indiquant que la ressource a
été définitivement supprimée. Lorsque ce statut est défini, on ne
doit pas utiliser l'argument <var>URL</var>.</dd>
</dl>
<p>On peut renvoyer d'autres codes de statut en spécifiant le code
de statut numérique comme valeur de l'argument of <var>statut</var>.
Si le code de statut est compris entre 300 et 399, l'argument
<var>URL</var> doit être présent, sinon il ne doit pas être utilisé.
Notez que le statut doit être connu du code d'Apache (voir la
fonction <code>send_error_response</code> dans
http_protocol.c).</p>
<example><title>Exemple :</title>
Redirect permanent /un http://example.com/deux<br />
Redirect 303 /trois http://example.com/autre
</example>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>RedirectMatch</name>
<description>Envoie une redirection externe faisant appel aux
expressions rationnelles pour la mise en correspondance de l'URL
courante</description>
<syntax>RedirectMatch [<var>statut</var>] <var>regex</var>
<var>URL</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Cette directive est identique à la directive <directive
module="mod_alias">Redirect</directive>, mais fait appel aux
<glossary ref="regex">expressions rationnelles</glossary>, à la
place d'une simple mise en correspondance de préfixe. L'expression
rationnelle fournie est mise en correspondance avec le chemin URL,
et si elle correspond, le serveur va substituer toute partie de
chemin correspondante entre parenthèses dans la chaîne spécifiée et
l'utiliser comme nom de fichier. Par exemple, pour rediriger tous
les fichiers GIF vers les fichiers JPEG de même nom sur un autre
serveur, on peut utiliser :</p>
<example>
RedirectMatch (.*)\.gif$ http://autre.example.com$1.jpg
</example>
<p>Les remarques à propos de la différence entre <directive
module="mod_alias">Alias</directive> et <directive
module="mod_alias">AliasMatch</directive> s'appliquent aussi à la
différence entre les directives <directive
module="mod_alias">Redirect</directive> et <directive
module="mod_alias">RedirectMatch</directive>. Voir la directive
<directive module="mod_alias">AliasMatch</directive> pour plus de
détails.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>RedirectTemp</name>
<description>Envoie une redirection externe temporaire demandant au
client d'effectuer une nouvelle requête avec une URL
différente</description>
<syntax>RedirectTemp <var>chemin URL</var> <var>URL</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Cette directive informe le client que la redirection n'est
que temporaire (statut 302). Son comportement est exactement le même
que celui de <code>Redirect temp</code>.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>RedirectPermanent</name>
<description>Envoie une redirection externe permanente demandant au
client d'effectuer une nouvelle requête avec une URL
différente</description>
<syntax>RedirectPermanent <var>chemin URL</var> <var>URL</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Cette directive informe le client que la redirection est
permanente (statut 301). Son comportement est exactement le même
que celui de <code>Redirect permanent</code>.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ScriptAlias</name>
<description>Fait correspondre une URL à une zone du système de fichiers
et désigne la cible comme script CGI</description>
<syntax>ScriptAlias <var>chemin URL</var>
<var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>La directive <directive>ScriptAlias</directive> présente le même
comportement que la directive <directive
module="mod_alias">Alias</directive>, mais désigne en plus le
répertoire cible comme conteneur de scripts CGI qui seront traitées
par le gestionnaire cgi-script du module <module>mod_cgi</module>.
Les URLs dont le chemin URL sensible à la casse (décodé avec
caractères %) commence par <var>chemin URL</var> seront mises en
correspondance avec les scripts dont le chemin commence par le
second argument, qui est un chemin complet dans le système de
fichiers local.</p>
<example><title>Exemple :</title>
</example>
ferait exécuter par le serveur le script
équivalente à :</p>
<example>
<Location /cgi-bin ><br />
<indent>
SetHandler cgi-script<br />
Options +ExecCGI<br />
</indent>
</Location>
</example>
<p>Vous pouvez aussi utiliser <directive>ScriptAlias</directive>
avec un script ou gestionnaire de votre cru. Par exemple :</p>
<example>
ScriptAlias /cgi-bin/ /web/cgi-handler.pl
</example>
<p>Dans ce scénario, tous les fichiers faisant l'objet d'une requête
dans <code>/cgi-bin/</code> seront traités par le fichier que vous
avez spécifié, ce qui vous permet d'utiliser votre propre
gestionnaire. Vous pouvez l'utiliser comme enveloppe (wrapper) pour
les scripts CGI afin d'ajouter du contenu, ou autre action "maison".</p>
<note type="warning">Il est préférable d'éviter de placer les
scripts CGI dans l'arborescence de <directive
module="core">DocumentRoot</directive> afin d'éviter de révéler
accidentellement leur code source lors d'une modification de
configuration. On y parvient aisément avec
<directive>ScriptAlias</directive> en mettant en correspondance une
URL et en désignant la cible comme scripts CGI par la même occasion.
Si vous choisissez de placer vos scripts CGI dans un répertoire
accessible depuis le web, n'utilisez pas
<directive>ScriptAlias</directive>. Utilisez plutôt <directive
module="core" type="section">Directory</directive>, <directive
module="core">SetHandler</directive>, et <directive
module="core">Options</directive> comme dans l'exemple suivant :
<example>
<indent>
SetHandler cgi-script<br />
Options ExecCGI<br />
</indent>
</Directory>
</example>
Ceci est nécessaire car plusieurs <var>chemins URL</var> peuvent
correspondre à la même zone du système de fichiers, court-circuitant
ainsi la directive <directive>ScriptAlias</directive> et révélant le
code source des scripts CGI s'ils ne sont pas protégés par une
section <directive module="core">Directory</directive>.</note>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>ScriptAliasMatch</name>
<description>Fait correspondre une URL à une zone du système de fichiers
en faisant appel aux expressions rationnelles et en désignant la cible
comme un script CGI</description>
<syntax>ScriptAliasMatch <var>regex</var>
<var>chemin fichier</var>|<var>chemin répertoire</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>Cette directive est équivalente à la directive <directive
module="mod_alias">ScriptAlias</directive>, mais fait appel aux
<glossary ref="regex">expressions rationnelles</glossary>, à la
place d'une simple mise en correspondance de préfixe. L'expression
rationnelle fournie est mise en correspondance avec le chemin URL,
et si elle correspond, le serveur va substituer toute partie de
chemin entre parenthèses dans la chaîne spécifiée et l'utiliser
comme nom de fichier. Par exemple, pour activer le répertoire
standard <code>/cgi-bin</code>, on peut utiliser :</p>
<example>
</example>
<p>Comme dans le cas d'AliasMatch, toute la puissance des <glossary
ref="rexex">expressions rationnelles</glossary> peut être mise à
contribution. Par exemple, il est possible de construire un alias
avec une comparaison du modèle du chemin URL insensible à la casse :</p>
<example>
</example>
<p>Les remarques à propos de la différence entre <directive
module="mod_alias">Alias</directive> et <directive
module="mod_alias">AliasMatch</directive> s'appliquent aussi à la
différence entre les directives <directive
module="mod_alias">ScriptAlias</directive> et <directive
module="mod_alias">ScriptAliasMatch</directive>. Voir la directive
<directive module="mod_alias">AliasMatch</directive> pour plus de
détails.</p>
</usage>
</directivesynopsis>
</modulesynopsis>