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
Les directives
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
Premièrement, toutes les redirections sont traitées avant les
alias, et ainsi, une requête qui correspond à une directive
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 :
Si l'ordre des directives était inversé, la directive /foo
serait toujours appliquée avant la directive
/foo/bar
, et cette dernière serait toujours
ignorée.
La directive
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
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
En particulier, si vous créez un alias ayant pour cible un
répertoire situé en dehors de l'arborescence de votre site web
Cette directive est identique à la directive /icons
, on peut
utiliser :
Toute la puissance des
Il existe une différence subtile entre
En d'autres termes, le remplacement d'^
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 :
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/ :
Voici la directive AliasMatch qui produira le même résultat que la directive Alias ci-dessus :
Bien entendu, il n'y a aucune raison d'utiliser
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.
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
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).
Cette directive est identique à la directive
Les remarques à propos de la différence entre
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
.
Cette directive informe le client que la redirection est
permanente (code 301). Son comportement est exactement le même
que celui de Redirect permanent
.
La directive
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 à :
Vous pouvez aussi utiliser
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".
Cette directive est équivalente à la directive /cgi-bin
, on peut utiliser :
Comme dans le cas d'AliasMatch, toute la puissance des
Les remarques à propos de la différence entre