Serveur Apache HTTP Version 2.4
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 |
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.
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
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.
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.
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
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.
Description: | Envoie une redirection externe demandant au client d'effectuer une autre requ�te avec une URL diff�rente |
---|---|
Syntaxe: | Redirect [�tat] chemin URL
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 chemin URL 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 chemin URL va renvoyer une redirection au client vers l'URL cible. Tout �l�ment de chemin suppl�mentaire situ� en aval du chemin URL 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 POST
s 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 faisant intervenir les expressions
rationnelles, veuillez vous reporter � la directive RedirectMatch
.
Les directives de redirection ont priorit� sur les directives Alias et ScriptAlias, quel que soit leur ordre d'apparition dans le fichier de configuration.
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 :
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
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.
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
.
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
.
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 |
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".
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
.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.