Serveur Apache HTTP Version 2.3
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://myserver/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://myserver/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
.
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>
Order allow,deny
Allow from all
</Directory>
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
On peut aussi construire un alias qui met en correspondance le chemin URL sans tenir compte de la casse :
AliasMatch (?i)^/image(.*) /ftp/pub/image$1
Description: | Envoie une redirection externe demandant au client d'effectuer une autre requête avec une URL différente |
---|---|
Syntaxe: | Redirect [statut] chemin URL
URL |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Annuler: | 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
. 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 statut 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 statut pour renvoyer d'autres codes de statut HTTP :
On peut renvoyer d'autres codes de statut en spécifiant le code
de statut numérique comme valeur de l'argument of statut.
Si le code de statut est compris entre 300 et 399, l'argument
URL 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 send_error_response
dans
http_protocol.c).
Redirect permanent /un http://example.com/deux
Redirect 303 /trois http://example.com/autre
Description: | Envoie une redirection externe faisant appel aux expressions rationnelles pour la mise en correspondance de l'URL courante |
---|---|
Syntaxe: | RedirectMatch [statut] regex
URL |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Annuler: | 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://www.autre-serveur.com$1.jpg
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 |
Annuler: | FileInfo |
Statut: | Base |
Module: | mod_alias |
Cette directive informe le client que la redirection est
permanente (statut 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 |
Annuler: | FileInfo |
Statut: | Base |
Module: | mod_alias |
Cette directive informe le client que la redirection n'est
que temporaire (statut 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://mon-serveur/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>
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