-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1042758 -->
+<!-- English Revision: 1756706 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
avec une URL différente. Elles sont souvent utilisées lorsqu'une
ressource a été déplacée.</p>
+ <p>Lorsque les directives <directive
+ module="mod_alias">Alias</directive>, <directive
+ module="mod_alias">ScriptAlias</directive> ou <directive
+ module="mod_alias">Redirect</directive> sont définies au sein d'une
+ section <directive type="section" module="core">Location</directive>
+ ou <directive type="section"
+ module="core">LocationMatch</directive>, vous pouvez utiliser la <a
+ href="../expr.html">syntaxe des expressions</a> pour manipuler l'URL
+ ou le chemin de destination.
+ </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
au moins précis afin que toutes les directives puissent
éventuellement s'appliquer, comme dans l'exemple suivant :</p>
- <example>
- Alias /foo/bar /baz<br />
- Alias /foo /gaq
- </example>
+ <highlight language="config">
+Alias "/foo/bar" "/baz"
+Alias "/foo" "/gaq"
+ </highlight>
<p>Si l'ordre des directives était inversé, la directive <directive
module="mod_alias">Alias</directive> ayant pour argument
<code>/foo/bar</code>, et cette dernière serait toujours
ignorée.</p>
+ <p>La définition de directives <directive
+ module="mod_alias">Alias</directive>, <directive
+ module="mod_alias">ScriptAlias</directive> ou <directive
+ module="mod_alias">Redirect</directive> au sein de sections
+ <directive type="section" module="core">Location</directive> ou
+ <directive type="section" module="core">LocationMatch</directive>
+ l'emporte sur d'autres définitions éventuelles de ces mêmes
+ directives au niveau de la configuration générale du serveur.</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>
+<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>
est sensible à la casse, même sur les systèmes de fichiers
insensibles à la casse.</p>
- <example><title>Exemple :</title>
- Alias /image /ftp/pub/image
- </example>
+ <highlight language="config">
+ Alias "/image" "/ftp/pub/image"
+ </highlight>
- <p>Une requête pour <code>http://myserver/image/foo.gif</code> fera
+ <p>Une requête pour <code>http://example.com/image/foo.gif</code> fera
renvoyer par le serveur le fichier
<code>/ftp/pub/image/foo.gif</code>. Seuls les éléments de chemin
complets sont testés ; ainsi l'alias précédent ne conviendra pas
- pour une requête du style <code>http://myserver/imagefoo.gif</code>.
+ pour une requête du style <code>http://example.com/imagefoo.gif</code>.
Pour des mises en correspondance plus complexes faisant intervenir
les expressions rationnelles, veuillez vous reporter à la directive
<directive module="mod_alias">AliasMatch</directive>.</p>
URL</var>, vous devrez aussi ajouter un slash de fin au chemin de la
requête. Autrement dit, si vous définissez</p>
- <dl><dd><code>Alias /icons/ /usr/local/apache/icons/</code></dd></dl>
+ <highlight language="config">
+ Alias "/icons/" "/usr/local/apache/icons/"
+ </highlight>
- <p>l'alias précédent ne s'appliquera pas à l'url
- <code>/icons</code>.</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>
<directive module="core">DocumentRoot</directive>, vous devrez
probablement permettre explicitement l'accès à ce répertoire.</p>
- <example><title>Exemple :</title>
- Alias /image /ftp/pub/image<br />
- <Directory /ftp/pub/image><br />
- <indent>
- Require all granted<br />
- </indent>
- </Directory>
- </example>
+ <highlight language="config">
+Alias "/image" "/ftp/pub/image"
+<Directory "/ftp/pub/image">
+ Require all granted
+</Directory>
+ </highlight>
+
+ <p>Le nombre de slashes dans le paramètre <var>chemin URL</var> doit
+ correspondre au nombre de slashes dans le chemin URL de la requête.</p>
+
+ <p>Si la directive <directive>Alias</directive> est définie au sein
+ d'une section <directive type="section"
+ module="core">Location</directive> ou <directive type="section"
+ module="core">LocationMatch</directive>, <var>chemin URL</var> est
+ omis et <var>chemin fichier</var> est interprété en utilisant la <a
+ href="../expr.html">syntaxe des expressions</a>.<br />
+ Cette syntaxe est disponible à partir de la version 2.4.19 du
+ serveur HTTP Apache.</p>
+
+ <highlight language="config">
+<Location "/image">
+ Alias "/ftp/pub/image"
+</Location>
+<LocationMatch "/error/(?<NUMBER>[0-9]+)">
+ Alias "/usr/local/apache/errors/%{env:MATCH_NUMBER}.html"
+</LocationMatch>
+ </highlight>
</usage>
</directivesynopsis>
Par exemple, pour activer le répertoire <code>/icons</code>, on peut
utiliser :</p>
- <example>
- AliasMatch ^/icons(.*) /usr/local/apache/icons$1
- </example>
+ <highlight language="config">
+ AliasMatch "^/icons(.*)" "/usr/local/apache/icons$1$2"
+ </highlight>
<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>
- AliasMatch (?i)^/image(.*) /ftp/pub/image$1
- </example>
+ <highlight language="config">
+ AliasMatch "(?i)^/image(.*)" "/ftp/pub/image$1"
+ </highlight>
<p>Il existe une différence subtile entre <directive
module="mod_alias">Alias</directive> et <directive
<p>Par exemple, supposons que nous voulions reformuler cet alias
avec AliasMatch :</p>
- <example>
- Alias /image/ /ftp/pub/image/
- </example>
+ <highlight language="config">
+ Alias "/image/" "/ftp/pub/image/"
+ </highlight>
<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
qui contiennent /image/ vers /ftp/pub/image/ :</p>
- <example>
- AliasMatch /image/ /ftp/pub/image/
- </example>
+ <highlight language="config">
+ AliasMatch "/image/" "/ftp/pub/image/"
+ </highlight>
<p>Voici la directive AliasMatch qui produira le même résultat que
la directive Alias ci-dessus :</p>
- <example>
- AliasMatch ^/image/(.*)$ /ftp/pub/image/$1
- </example>
+ <highlight language="config">
+ AliasMatch "^/image/(.*)$" "/ftp/pub/image/$1"
+ </highlight>
<p>Bien entendu, il n'y a aucune raison d'utiliser <directive
module="mod_alias">AliasMatch</directive> dans le cas où <directive
servir différentes sortes de fichiers à partir de répertoires
différents :</p>
- <example>
- AliasMatch ^/image/(.*)\.jpg$ /fichiers/jpg.images/$1.jpg<br/>
- AliasMatch ^/image/(.*)\.gif$ /fichiers/gif.images/$1.gif
- </example>
+ <highlight language="config">
+ AliasMatch "^/image/(.*)\.jpg$" "/fichiers/jpg.images/$1.jpg"
+ AliasMatch "^/image/(.*)\.gif$" "/fichiers/gif.images/$1.gif"
+ </highlight>
+
+ <p>Les éventuels slashes de tête multiples seront supprimés par le
+ serveur avant que les directives de ce module n'effectuent des
+ comparaisons avec le chemin URL de la requête.
+ </p>
</usage>
</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>
+<syntax>Redirect [<var>état</var>] [<var>URL-path</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>La directive <directive>Redirect</directive> 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
+ <p>L'ancien <em>URL-path</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>
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
+ <p>Ensuite, toute requête commençant par <em>URL-path</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>
+ élément de chemin supplémentaire situé en aval du <em>URL-path</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>
+ <highlight language="config">
+# Redirige vers une URL sur un serveur différent
+Redirect "/service" "http://foo2.example.com/service"
+
+# Redirige vers une URL sur le même serveur
+Redirect "/one" "/two"
+ </highlight>
<p>Si le client effectue une requête pour l'URL
<code>http://example.com/service/foo.txt</code>, il lui sera demandé
éléments de chemin complets sont testés, si bien que l'exemple
précédent ne s'appliquera pas à l'URL
<code>http://example.com/servicefoo.txt</code>. Pour des mises en
- correspondance plus complexes faisant intervenir les expressions
+ correspondance plus complexes utilisant la <a
+ href="../expr.html">syntaxe des expressions</a>, ne spécifiez pas
+ d'argument <var>URL-path</var> comme décrit ci-dessous. En outre,
+ pour une mise en correspondance en utilisant 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
+ <p>Les directives <directive>Redirect</directive> ont priorité sur les
+ directives <directive module="mod_alias">Alias</directive> et <directive
+ module="mod_alias">ScriptAlias</directive>, quel que soit leur ordre
+ d'apparition dans le fichier de configuration. Les directives
+ <directive>Redirect</directive> définies au sein d'une section Location
+ l'emportent sur les directives <directive>Redirect</directive> et <directive
+ module="mod_alias">Alias</directive> comportant un argument
+ <var>URL-path</var>.</p></note>
+
+ <p>Si aucun argument <var>état</var> n'est spécifié, la
+ redirection sera temporaire (code 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>
+ utiliser l'argument <var>état</var> pour renvoyer d'autres codes HTTP :</p>
<dl>
<dt>permanent</dt>
- <dd>Renvoie un statut de redirection permanente (301), indiquant
+ <dd>Renvoie un code 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
+ <dd>Renvoie un code 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
+ <dd>Renvoie un code "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
+ <dd>Renvoie un code "Gone" (410) indiquant que la ressource a
+ été définitivement supprimée. Lorsque
+ ce code est utilisé, 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
+ <p>On peut renvoyer d'autres codes en spécifiant le code
+ numérique comme valeur de l'argument of <var>état</var>.
+ Si le code est compris entre 300 et 399, l'argument
+ <var>URL</var> doit être présent. Si le code
+ n'est <em>pas</em> compris entre 300 et 399, l'argument
+ <var>URL</var> ne doit pas apparaître. Le code doit être un code
+ HTTP valide, connu du serveur HTTP 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>
+ <highlight language="config">
+Redirect permanent "/one" "http://example.com/two"
+Redirect 303 "/three" "http://example.com/other"
+ </highlight>
+
+ <p>Si une directive <directive>Redirect</directive> est définie au
+ sein d'une section <directive type="section"
+ module="core">Location</directive> ou <directive type="section"
+ module="core">LocationMatch</directive> et si l'argument <var>URL-path</var> est omis, l'argument <var>URL</var> sera interprété en
+ utilisant la <a href="../expr.html">syntaxe des expressions</a>.<br />
+ Cette syntaxe est disponible à partir de la version 2.4.19 du
+ serveur HTTP Apache.</p>
+
+ <highlight language="config">
+<Location "/one">
+ Redirect permanent "http://example.com/two"
+</Location>
+<Location "/three">
+ Redirect 303 "http://example.com/other"
+</Location>
+<LocationMatch "/error/(?<NUMBER>[0-9]+)">
+ Redirect permanent "http://example.com/errors/%{env:MATCH_NUMBER}.html"
+</LocationMatch>
+ </highlight>
</usage>
</directivesynopsis>
<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>
+<syntax>RedirectMatch [<var>état</var>] <var>regex</var>
<var>URL</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
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>
+ <highlight language="config">
+ RedirectMatch "(.*)\.gif$" "http://autre.example.com$1.jpg"
+ </highlight>
<p>Les remarques à propos de la différence entre <directive
module="mod_alias">Alias</directive> et <directive
<usage>
<p>Cette directive informe le client que la redirection n'est
- que temporaire (statut 302). Son comportement est exactement le même
+ que temporaire (code 302). Son comportement est exactement le même
que celui de <code>Redirect temp</code>.</p>
</usage>
</directivesynopsis>
<usage>
<p>Cette directive informe le client que la redirection est
- permanente (statut 301). Son comportement est exactement le même
+ permanente (code 301). Son comportement est exactement le même
que celui de <code>Redirect permanent</code>.</p>
</usage>
</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>
+<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>
+<context>directory</context>
</contextlist>
<usage>
second argument, qui est un chemin complet dans le système de
fichiers local.</p>
- <example><title>Exemple :</title>
- ScriptAlias /cgi-bin/ /web/cgi-bin/
- </example>
+ <highlight language="config">
+ ScriptAlias "/cgi-bin/" "/web/cgi-bin/"
+ </highlight>
- <p>Une requête pour <code>http://mon-serveur/cgi-bin/foo</code>
+ <p>Une requête pour <code>http://example.com/cgi-bin/foo</code>
ferait exécuter par le serveur le script
<code>/web/cgi-bin/foo</code>. Cette configuration est sensiblement
équivalente à :</p>
- <example>
- Alias /cgi-bin/ /web/cgi-bin/<br />
- <Location /cgi-bin ><br />
- <indent>
- SetHandler cgi-script<br />
- Options +ExecCGI<br />
- </indent>
- </Location>
- </example>
+ <highlight language="config">
+Alias "/cgi-bin/" "/web/cgi-bin/"
+<Location "/cgi-bin">
+ SetHandler cgi-script
+ Options +ExecCGI
+</Location>
+ </highlight>
<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>
+ <highlight language="config">
+ ScriptAlias "/cgi-bin/" "/web/cgi-handler.pl"
+ </highlight>
<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
module="core" type="section">Directory</directive>, <directive
module="core">SetHandler</directive>, et <directive
module="core">Options</directive> comme dans l'exemple suivant :
- <example>
- <Directory /usr/local/apache2/htdocs/cgi-bin ><br />
- <indent>
- SetHandler cgi-script<br />
- Options ExecCGI<br />
- </indent>
- </Directory>
- </example>
+ <highlight language="config">
+<Directory "/usr/local/apache2/htdocs/cgi-bin">
+ SetHandler cgi-script
+ Options ExecCGI
+</Directory>
+ </highlight>
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>
+ <p>Si la directive <directive>ScriptAlias</directive> est définie au
+ sein d'une section <directive type="section"
+ module="core">Location</directive> ou <directive type="section"
+ module="core">LocationMatch</directive> et si l'argument <var>chemin
+ URL</var> est omis, l'argument <var>URL</var> sera interprété en
+ utilisant la <a href="../expr.html">syntaxe des expressions</a>.<br />
+ Cette syntaxe est disponible à partir de la version 2.4.19 du
+ serveur HTTP Apache.</p>
+
+ <highlight language="config">
+<Location "/cgi-bin">
+ ScriptAlias "/web/cgi-bin/"
+</Location>
+<LocationMatch "/cgi-bin/errors/(?<NUMBER>[0-9]+)">
+ ScriptAlias "/web/cgi-bin/errors/%{env:MATCH_NUMBER}.cgi"
+</LocationMatch>
+ </highlight>
+
</usage>
<seealso><a href="../howto/cgi.html">Tutoriel CGI</a></seealso>
</directivesynopsis>
comme nom de fichier. Par exemple, pour activer le répertoire
standard <code>/cgi-bin</code>, on peut utiliser :</p>
- <example>
- ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
- </example>
+ <highlight language="config">
+ ScriptAliasMatch "^/cgi-bin(.*)" "/usr/local/apache/cgi-bin$1"
+ </highlight>
<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>
- ScriptAliasMatch (?i)^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
- </example>
+ <highlight language="config">
+ ScriptAliasMatch "(?i)^/cgi-bin(.*)" "/usr/local/apache/cgi-bin$1"
+ </highlight>
<p>Les remarques à propos de la différence entre <directive
module="mod_alias">Alias</directive> et <directive