<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_alias

Langues Disponibles:  en  |  fr  |  ja  |  ko  |  tr 

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
Statut:Base
Identificateur�de�Module:alias_module
Fichier�Source:mod_alias.c

Sommaire

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 Alias et ScriptAlias 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 DocumentRoot comme s'ils y �taient r�ellement. La directive ScriptAlias a pour effet suppl�mentaire de marquer le r�pertoire cible comme conteneur de scripts CGI.

Les directives Redirect 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.

Lorsque les directives Alias, ScriptAlias ou Redirect sont d�finies au sein d'une section <Location> ou <LocationMatch>, vous pouvez utiliser la syntaxe des expressions pour manipuler l'URL ou le chemin de destination.

mod_alias 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 mod_rewrite

Sujets

Directives

Traitement des bugs

Voir aussi

top

Chronologie du traitement

Les alias et redirections apparaissant dans diff�rents contextes sont trait�s comme les autres directives en respectant les r�gles de fusion 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 <VirtualHost>).

Premi�rement, toutes les redirections sont trait�es avant les alias, et ainsi, une requ�te qui correspond � une directive Redirect ou RedirectMatch 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.

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 :

Alias "/foo/bar" "/baz"
Alias "/foo" "/gaq"

Si l'ordre des directives �tait invers�, la directive Alias ayant pour argument /foo serait toujours appliqu�e avant la directive Alias ayant pour argument /foo/bar, et cette derni�re serait toujours ignor�e.

La d�finition de directives Alias, ScriptAlias ou Redirect au sein de sections <Location> ou <LocationMatch> l'emporte sur d'autres d�finitions �ventuelles de ces m�mes directives au niveau de la configuration g�n�rale du serveur.

top

Directive Alias

Description:Met en correspondance des URLs avec des chemins du syst�me de fichiers
Syntaxe:Alias [chemin URL] chemin fichier|chemin r�pertoire
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_alias

La directive Alias 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 DocumentRoot. Les URLs dont le chemin (d�cod� avec caract�res %) commence par chemin URL seront mises en correspondance avec des fichiers locaux dont le chemin commence par chemin r�pertoire. Le chemin URL est sensible � la casse, m�me sur les syst�mes de fichiers insensibles � la casse.

Alias "/image" "/ftp/pub/image"

Une requ�te pour http://example.com/image/foo.gif fera renvoyer par le serveur le fichier /ftp/pub/image/foo.gif. 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 http://example.com/imagefoo.gif. Pour des mises en correspondance plus complexes faisant intervenir les expressions rationnelles, veuillez vous reporter � la directive AliasMatch.

Notez que si vous ajoutez un slash de fin au chemin URL, vous devrez aussi ajouter un slash de fin au chemin de la requ�te. Autrement dit, si vous d�finissez

Alias "/icons/" "/usr/local/apache/icons/"

l'alias pr�c�dent ne s'appliquera pas � l'URL /icons � cause de l'absence du slash final. Ainsi, si le slash final est absent du chemin de l'URL, il doit aussi l'�tre du chemin du fichier.

Notez qu'il pourra s'av�rer n�cessaire de d�finir des sections <Directory> suppl�mentaires qui couvriront la destination des alias. Le traitement des alias intervenant avant le traitement des sections <Directory>, seules les cibles des alias sont affect�es (Notez cependant que les sections <Location> sont trait�es avant les alias, et s'appliqueront donc).

En particulier, si vous cr�ez un alias ayant pour cible un r�pertoire situ� en dehors de l'arborescence de votre site web DocumentRoot, vous devrez probablement permettre explicitement l'acc�s � ce r�pertoire.

Alias "/image" "/ftp/pub/image"
<Directory "/ftp/pub/image">
    Require all granted
</Directory>

Le nombre de slashes dans le param�tre chemin URL doit correspondre au nombre de slashes dans le chemin URL de la requ�te.

Si la directive Alias est d�finie au sein d'une section <Location> ou <LocationMatch>, chemin URL est omis et chemin fichier est interpr�t� en utilisant la syntaxe des expressions.
Cette syntaxe est disponible � partir de la version 2.4.19 du serveur HTTP Apache.

<Location "/image">
    Alias "/ftp/pub/image"
</Location>
<LocationMatch "/error/(?<NUMBER>[0-9]+)">
    Alias "/usr/local/apache/errors/%{env:MATCH_NUMBER}.html"
</LocationMatch>
top

Directive AliasMatch

Description:Met en correspondance des URLs avec le syst�me de fichiers en faisant intervenir les expressions rationnelles
Syntaxe:AliasMatch regex chemin fichier|chemin r�pertoire
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_alias

Cette directive est identique � la directive Alias, mais fait appel aux expressions rationnelles, � 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 /icons, on peut utiliser :

AliasMatch "^/icons(.*)" "/usr/local/apache/icons$1$2"

Toute la puissance des expressions rationnelles peut �tre mise � contribution. Par exemple, il est possible de construire un alias avec un mod�le de chemin URL insensible � la casse :

AliasMatch "(?i)^/image(.*)" "/ftp/pub/image$1"

Il existe une diff�rence subtile entre Alias et AliasMatch : Alias 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 AliasMatch 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.

En d'autres termes, le remplacement d'Alias par AliasMatch ne produira pas le m�me r�sultat. Au minimum, vous devez ajouter ^ au d�but de l'expression rationnelle, (.*)$ � sa fin et $1 � la fin de la cha�ne de remplacement.

Par exemple, supposons que nous voulions reformuler cet alias avec AliasMatch :

Alias "/image/" "/ftp/pub/image/"

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/ :

AliasMatch "/image/" "/ftp/pub/image/"

Voici la directive AliasMatch qui produira le m�me r�sultat que la directive Alias ci-dessus :

AliasMatch "^/image/(.*)$" "/ftp/pub/image/$1"

Bien entendu, il n'y a aucune raison d'utiliser AliasMatch dans le cas o� Alias suffit. AliasMatch 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 :

AliasMatch "^/image/(.*)\.jpg$" "/fichiers/jpg.images/$1.jpg"
      AliasMatch "^/image/(.*)\.gif$" "/fichiers/gif.images/$1.gif"

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.

top

Directive Redirect

Description:Envoie une redirection externe demandant au client d'effectuer une autre requ�te avec une URL diff�rente
Syntaxe:Redirect [�tat] [URL-path] URL
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
AllowOverride:FileInfo
Statut:Base
Module:mod_alias

La directive Redirect permet de faire correspondre une ancienne URL � une nouvelle en demandant au client d'aller chercher la ressource � une autre localisation.

L'ancien URL-path 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.

La nouvelle URL 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.

Ensuite, toute requ�te commen�ant par URL-path va renvoyer une redirection au client vers l'URL cible. Tout �l�ment de chemin suppl�mentaire situ� en aval du URL-path sera ajout� � l'URL cible.

# 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"

Si le client effectue une requ�te pour l'URL http://example.com/service/foo.txt, il lui sera demand� d'en effectuer une autre pour l'URL http://foo2.example.com/service/foo.txt. Ceci concerne les requ�tes avec param�tres GET, comme http://example.com/service/foo.pl?q=23&a=42, qui seront redirig�es vers http://foo2.example.com/service/foo.pl?q=23&a=42. Notez que les POSTs seront ignor�s.
Seuls les �l�ments de chemin complets sont test�s, si bien que l'exemple pr�c�dent ne s'appliquera pas � l'URL http://example.com/servicefoo.txt. Pour des mises en correspondance plus complexes utilisant la syntaxe des expressions, ne sp�cifiez pas d'argument URL-path comme d�crit ci-dessous. En outre, pour une mise en correspondance en utilisant les expressions rationnelles, veuillez vous reporter � la directive RedirectMatch.

Note

Les directives Redirect ont priorit� sur les directives Alias et ScriptAlias, quel que soit leur ordre d'apparition dans le fichier de configuration. Les directives Redirect d�finies au sein d'une section Location l'emportent sur les directives Redirect et Alias comportant un argument URL-path.

Si aucun argument �tat 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 �tat pour renvoyer d'autres codes HTTP :

permanent
Renvoie un code de redirection permanente (301), indiquant que la ressource a �t� d�finitivement d�plac�e.
temp
Renvoie un code de redirection temporaire (302). C'est le comportement par d�faut.
seeother
Renvoie un code "See Other" (303) indiquant que la ressource a �t� remplac�e par une autre.
gone
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 URL.

On peut renvoyer d'autres codes en sp�cifiant le code num�rique comme valeur de l'argument of �tat. Si le code est compris entre 300 et 399, l'argument URL doit �tre pr�sent. Si le code n'est pas compris entre 300 et 399, l'argument URL ne doit pas appara�tre. Le code doit �tre un code HTTP valide, connu du serveur HTTP Apache (voir la fonction send_error_response dans http_protocol.c).

Redirect permanent "/one" "http://example.com/two"
Redirect 303 "/three" "http://example.com/other"

Si une directive Redirect est d�finie au sein d'une section <Location> ou <LocationMatch> et si l'argument URL-path est omis, l'argument URL sera interpr�t� en utilisant la syntaxe des expressions.
Cette syntaxe est disponible � partir de la version 2.4.19 du serveur HTTP Apache.

<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>
top

Directive RedirectMatch

Description:Envoie une redirection externe faisant appel aux expressions rationnelles pour la mise en correspondance de l'URL courante
Syntaxe:RedirectMatch [�tat] regex URL
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
AllowOverride:FileInfo
Statut:Base
Module:mod_alias

Cette directive est identique � la directive Redirect, mais fait appel aux expressions rationnelles, � 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 :

RedirectMatch "(.*)\.gif$" "http://autre.example.com$1.jpg"

Les remarques � propos de la diff�rence entre Alias et AliasMatch s'appliquent aussi � la diff�rence entre les directives Redirect et RedirectMatch. Voir la directive AliasMatch pour plus de d�tails.

top

Directive RedirectPermanent

Description:Envoie une redirection externe permanente demandant au client d'effectuer une nouvelle requ�te avec une URL diff�rente
Syntaxe:RedirectPermanent chemin URL URL
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
AllowOverride:FileInfo
Statut:Base
Module:mod_alias

Cette directive informe le client que la redirection est permanente (code 301). Son comportement est exactement le m�me que celui de Redirect permanent.

top

Directive RedirectTemp

Description:Envoie une redirection externe temporaire demandant au client d'effectuer une nouvelle requ�te avec une URL diff�rente
Syntaxe:RedirectTemp chemin URL URL
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
AllowOverride:FileInfo
Statut:Base
Module:mod_alias

Cette directive informe le client que la redirection n'est que temporaire (code 302). Son comportement est exactement le m�me que celui de Redirect temp.

top

Directive ScriptAlias

Description:Fait correspondre une URL � une zone du syst�me de fichiers et d�signe la cible comme script CGI
Syntaxe:ScriptAlias [chemin URL] chemin fichier|chemin r�pertoire
Contexte:configuration du serveur, serveur virtuel, r�pertoire
Statut:Base
Module:mod_alias

La directive ScriptAlias pr�sente le m�me comportement que la directive Alias, 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 mod_cgi. Les URLs dont le chemin URL sensible � la casse (d�cod� avec caract�res %) commence par chemin URL 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.

ScriptAlias "/cgi-bin/" "/web/cgi-bin/"

Une requ�te pour http://example.com/cgi-bin/foo ferait ex�cuter par le serveur le script /web/cgi-bin/foo. Cette configuration est sensiblement �quivalente � :

Alias "/cgi-bin/" "/web/cgi-bin/"
<Location "/cgi-bin">
    SetHandler cgi-script
    Options +ExecCGI
</Location>

Vous pouvez aussi utiliser ScriptAlias avec un script ou gestionnaire de votre cru. Par exemple :

ScriptAlias "/cgi-bin/" "/web/cgi-handler.pl"

Dans ce sc�nario, tous les fichiers faisant l'objet d'une requ�te dans /cgi-bin/ 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".

Il est pr�f�rable d'�viter de placer les scripts CGI dans l'arborescence de DocumentRoot afin d'�viter de r�v�ler accidentellement leur code source lors d'une modification de configuration. On y parvient ais�ment avec ScriptAlias 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 ScriptAlias. Utilisez plut�t <Directory>, SetHandler, et Options comme dans l'exemple suivant :
<Directory "/usr/local/apache2/htdocs/cgi-bin">
    SetHandler cgi-script
    Options ExecCGI
</Directory>
Ceci est n�cessaire car plusieurs chemins URL peuvent correspondre � la m�me zone du syst�me de fichiers, court-circuitant ainsi la directive ScriptAlias et r�v�lant le code source des scripts CGI s'ils ne sont pas prot�g�s par une section Directory.

Si la directive ScriptAlias est d�finie au sein d'une section <Location> ou <LocationMatch> et si l'argument chemin URL est omis, l'argument URL sera interpr�t� en utilisant la syntaxe des expressions.
Cette syntaxe est disponible � partir de la version 2.4.19 du serveur HTTP Apache.

<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>

Voir aussi

top

Directive ScriptAliasMatch

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
Syntaxe:ScriptAliasMatch regex chemin fichier|chemin r�pertoire
Contexte:configuration du serveur, serveur virtuel
Statut:Base
Module:mod_alias

Cette directive est �quivalente � la directive ScriptAlias, mais fait appel aux expressions rationnelles, � 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 /cgi-bin, on peut utiliser :

ScriptAliasMatch "^/cgi-bin(.*)" "/usr/local/apache/cgi-bin$1"

Comme dans le cas d'AliasMatch, toute la puissance des expressions rationnelles 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 :

ScriptAliasMatch "(?i)^/cgi-bin(.*)" "/usr/local/apache/cgi-bin$1"

Les remarques � propos de la diff�rence entre Alias et AliasMatch s'appliquent aussi � la diff�rence entre les directives ScriptAlias et ScriptAliasMatch. Voir la directive AliasMatch pour plus de d�tails.

Langues Disponibles:  en  |  fr  |  ja  |  ko  |  tr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
Comments are disabled for this page at the moment.