Le module
httpd.conf
ou dans un fichier
.htaccess
. Le chemin généré par une règle de
réécriture peut inclure une chaîne de paramètres, ou peut renvoyer
vers un traitement secondaire interne, une redirection vers une
requête externe ou vers le mandataire interne.
Vous trouverez d'avantage de détails, discussions et exemples dans la documentation détaillée sur mod_rewrite.
trace1
à
trace8
. Le niveau de journalisation peut être défini de
manière spécifique à debug
aucune action n'est journalisée, alors qu'elles
le sont pratiquement toutes au niveau trace8
.
trace2
qu'à des fins de débogage !
Ceux qui sont familiers avec les versions précédentes de
RewriteLog
et
RewriteLogLevel
. Elles ont été en effet remplacées
par une configuration de la journalisation par module, comme
mentionné plus haut.
Pour extraire les traces spécifiques à
La directive off
, ce module n'exécutera aucun traitement et ne
mettra pas à jour les variables d'environnement
SCRIPT_URx
.
Plutôt que de commenter toutes les directives
Notez que les hôtes virtuels n'héritent pas des
configurations de réécriture. Ceci implique que vous devez
insérer une directive RewriteEngine on
dans chaque
hôte virtuel pour lequel vous souhaitez utiliser des règles
de réécriture.
Les directives prg
ne sont pas prises en compte au cours de
l'initialisation du serveur si elle ont été définies dans un
contexte où la directive on
.
La directive
Inherit
Ceci force la configuration locale à hériter de la
configuration du niveau supérieur. Dans le contexte des hôtes
virtuels, cela signifie que les correspondances, conditions et
règles du serveur principal sont héritées. Dans le contexte des
répertoires, cela signifie que les conditions et règles de la
configuration .htaccess
ou les sections
InheritBefore
Même effet que l'option Inherit
ci-dessus, mais
les règles spécifiées dans le niveau parent s'appliquent
avant les règles spécifiées dans le niveau
enfant.
Disponible depuis la version 2.3.10 du serveur HTTP Apache.
InheritDown
Si cette option est activée, toutes les configurations enfants
hériteront de la configuration courante. Il en est de même si l'on
spécifie RewriteOptions Inherit
dans toutes les
configurations enfants. Voir l'option Inherit
pour
plus de détails à propos de la manière dont les relations
parent-enfants sont traitées.
Cette option est disponible à partir
de la version 2.4.8 du serveur HTTP Apache.
InheritDownBefore
L'effet de cette option est équivalent à celui de l'option
InheritDown
ci-dessus, mais les règles de la
configuration parente s'appliquent avant toute
règle de la configuration enfant.
Cette option est disponible à partir
de la version 2.4.8 du serveur HTTP Apache.
IgnoreInherit
Si cette option est activée, les configurations courante et
enfants ignoreront toute règle héritée d'une configuration parente
via les options InheritDown
ou
InheritDownBefore
.
Cette option est disponible à partir
de la version 2.4.8 du serveur HTTP Apache.
AllowNoSlash
Par défaut,
Lorsque la directive AllowNoSlash
pour
s'assurer que les règles de réécriture ne soient plus ignorées.
Si on le souhaite, cette option permet de faire s'appliquer des
règles de réécriture qui correspondent à un répertoire sans slash
final au sein de fichiers .htaccess.
Elle est disponible à
partir de la version 2.4.0 du serveur HTTP Apache.
AllowAnyURI
A partir de la version 2.2.22 de httpd, lorsqu'une directive serveur virtuel
ou de serveur principal,
AllowAnyURI
, afin de permettre à
Disponible depuis la version 2.4.3 du serveur HTTP Apache.
L'utilisation de cette option rendra le serveur vulnérable à
certains problèmes de sécurité si les règles de réécritures
concernées n'ont pas été rédigées avec soin. Il est par conséquent
fortement recommandé de ne pas utiliser cette
option. En particulier, prêtez attention aux chaînes en entrée contenant le
caractère '@
', qui peuvent modifier l'interprétation
de l'URI réécrite, comme indiqué dans les liens ci-dessus.
MergeBase
Avec cette option, la valeur de la directive
IgnoreContextInfo
Lors d'une
substitution relative dans un contexte de répertoire (htaccess),
et si la directive
La directive
MapName est le nom de la table de correspondance et servira à spécifier une fonction de mise en correspondance pour les chaînes de substitution d'une règle de réécriture selon une des constructions suivantes :
${
MapName :
mot-clé }
${
MapName :
mot-clé |
valeur par défaut
}
Lorsqu'une telle construction est rencontrée, la table de correspondance MapName est consultée et la clé mot-clé recherchée. Si la clé est trouvée, la construction est remplacée par la valeur de remplacement. Si la clé n'est pas trouvée, elle est remplacée par la valeur par défaut, ou par une chaîne vide si aucune valeur par défaut n'est spécifiée. La valeur vide se comporte comme si la clé était absente ; il est donc impossible de distinguer une valeur vide d'une absence de clé.
Par exemple, vous pouvez définir une directive
Vous pourrez ensuite utiliser cette table dans une
directive
La signification de l'argument MapTypeOptions dépend du MapType spécifié. Veuillez vous référer au document Utiliser RewriteMap pour plus de détails.
Les combinaisons suivantes pour type de correspondance et MapSource peuvent être utilisées :
httxt2dbm
(Détails ...).RewriteMap
: toupper, tolower, escape ou unescape
(Détails ...).Vous trouverez plus de détails et de nombreux exemples dans le RewriteMap HowTo.
La directive
Cette directive est obligatoire si vous utilisez un chemin relatif dans une substitution, et dans un contexte de répertoire (htaccess), sauf si au moins une de ces conditions est vérifiée :
Dans l'exemple ci-dessous, la directive
La directive
TestString est une chaîne qui peut contenir les extensions suivantes en plus du texte simple :
$N
(0 <= N <= 9). $1 à $9
permettent d'accéder aux parties regroupées (entre
parenthèses) du modèle, issues de la RewriteRule
concernée par le jeu de conditions RewriteCond
courant. $0 donne accès à l'ensemble de la chaîne
correspondant au modèle.%N
(0 <= N <= 9). %1 à %9
permettent d'accéder aux parties regroupées (entre
parenthèses) du modèle, issues de la dernière
condition RewriteCond
satisfaite du jeu de conditions RewriteCond
courant. %0 donne accès à l'ensemble de la chaîne
correspondant au modèle.${nomTable:clé|défaut}
. Voir la href="#mapfunc">documentation sur RewriteMap
pour plus de détails.
%{
NAME_OF_VARIABLE }
,
où NOM_DE_VARIABLE peut contenir une chaîne issue
de la liste suivante :
En-têtes HTTP : | connexion & requête: | |
---|---|---|
HTTP_ACCEPT HTTP_COOKIE HTTP_FORWARDED HTTP_HOST HTTP_PROXY_CONNECTION HTTP_REFERER HTTP_USER_AGENT |
AUTH_TYPE CONN_REMOTE_ADDR CONTEXT_PREFIX CONTEXT_DOCUMENT_ROOT IPV6 PATH_INFO QUERY_STRING REMOTE_ADDR REMOTE_HOST REMOTE_IDENT REMOTE_PORT REMOTE_USER REQUEST_METHOD SCRIPT_FILENAME |
|
variables internes au serveur : | date et heure : | spéciaux : |
DOCUMENT_ROOT SCRIPT_GROUP SCRIPT_USER SERVER_ADDR SERVER_ADMIN SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE |
TIME_YEAR TIME_MON TIME_DAY TIME_HOUR TIME_MIN TIME_SEC TIME_WDAY TIME |
API_VERSION CONN_REMOTE_ADDR HTTPS IS_SUBREQ REMOTE_ADDR REQUEST_FILENAME REQUEST_SCHEME REQUEST_URI THE_REQUEST |
Ces variables correspondent toutes aux en-têtes MIME
HTTP de mêmes noms, au variables C du serveur HTTP Apache, ou
aux champs struct tm
du système Unix. La
plupart d'entre elles sont documentées ici, dans la
spécification CGI ou ailleurs dans le
manuel.
SERVER_NAME et SERVER_PORT dépendent respectivement
des valeurs des directives
Parmi les variables spécifiques à mod_rewrite, ou trouve les suivantes :
API_VERSION
CONN_REMOTE_ADDR
HTTPS
IS_SUBREQ
REMOTE_ADDR
REQUEST_FILENAME
REQUEST_FILENAME
contient la
valeur de REQUEST_URI
. En fonction de la
valeur de la directive REQUEST_URI
pour déterminer à quel
fichier correspond la requête.REQUEST_SCHEME
REQUEST_URI
QUERY_STRING
.THE_REQUEST
GET
/index.html HTTP/1.1
"), à l'exclusion de tout
en-tête ajouté par le navigateur. Cette
valeur n'a pas été déséchappée (décodée), à la
différence de la plupart des variables suivantes.Si la chaîne_de_test contient la valeur spéciale
expr
, expression_de_comparaison sera traité
en tant qu'expression rationnelle de type ap_expr. Si des en-têtes HTTP sont
référencés dans l'expression rationnelle, et si le drapeau
novary
n'est pas activé, ils seront ajoutés à
l'en-tête Vary.
Autres points à connaître ::
Les variables SCRIPT_FILENAME
et
REQUEST_FILENAME
contiennent toutes deux la valeur
du champ filename
de la
structure interne request_rec
du serveur HTTP Apache.
Le premier nom correspond au nom de variable bien connu CGI,
alors que le second est l'équivalent de REQUEST_URI (qui
contient la valeur du champ uri
de
request_rec
).
Si une substitution intervient et si la réécriture se poursuit, la valeur des deux variables sera mise à jour en conséquence.
Dans le contexte du serveur principal (c'est à dire avant que
la requête ne soit mise en correspondance avec le système de
fichiers), SCRIPT_FILENAME et REQUEST_FILENAME ne peuvent pas
contenir le chemin entier dans le système de fichiers local car
ce chemin b'est pas connu à ce stade du traitement. Dans ce cas,
les deux variables contiendront la valeur de REQUEST_URI. Pour
obtenir le chemin complet de la requête dans le système de
fichiers local dans le contexte du serveur principal, utilisez une
référence avant à base d'URL
%{LA-U:REQUEST_FILENAME}
pour déterminer la valeur
finale de REQUEST_FILENAME.
%{ENV:variable}
, où variable peut
correspondre à une variable d'environnement quelconque.%{ENV:variable}
est aussi disponible, où
variable peut correspondre à toute variable
d'environnement. Peut être consulté via des structures internes
d'Apache httpd et (si on ne les trouve pas ici) via la fonction
getenv()
à partir du processus du serveur Apache
httpd.%{SSL:variable}
, où variable
peut être remplacé par le nom d'une
variable
d'environnement SSL . Si %{SSL:SSL_CIPHER_USEKEYSIZE}
pourra
contenir la valeur 128
. Ces variables sont
disponibles même si l'option StdEnvVars
de la
directive %{HTTP:en-tête}
, où
en-tête peut correspondre à tout nom d'en-tête MIME
HTTP, pour extraire la valeur d'un en-tête envoyé dans la
requête HTTP. Par exemple, %{HTTP:Proxy-Connection}
contiendra la valeur de l'en-tête HTTP
"Proxy-Connection:
".
Si on utilise un en-tête HTTP
dans une condition, et si cette condition est évaluée à
vrai
pour la requête, cet en-tête sera ajouté à l'en-tête Vary de
la réponse. Il ne le sera pas si la condition est évaluée à
faux
. L'ajout de l'en-tête HTTP à l'en-tête Vary
est nécessaire à une mise en cache appropriée.
Il faut garder à l'esprit que les conditions suivent une
logique de cout-circuit si le drapeau
'ornext|OR
' est utilisé, et que de
ce fait, certaines d'entre elles ne seront pas évaluées.
%{LA-U:variable}
, qui
permet d'effectuer une sous-requête interne à base d'URL, afin
de déterminer la valeur finale de variable. Ceci permet
d'accéder à la valeur d'une variable pour la réécriture inconnue
à ce stade du traitement, mais qui sera définie au
cours d'une phase ultérieure.
Par exemple, pour effectuer une réécriture dépendant de la
variable REMOTE_USER
dans le contexte du serveur
principal (fichier httpd.conf
), vous devez utiliser
%{LA-U:REMOTE_USER}
- cette variable est définie
par la phase d'autorisation qui intervient après la
phase de traduction d'URL (pendant laquelle mod_rewrite opère).
Par contre, comme mod_rewrite implémente son contexte de
répertoire (fichier .htaccess
) via la phase Fixup
de l'API, et comme la phase d'autorisation intervient
avant cette dernière, vous pouvez vous contenter
d'utiliser %{REMOTE_USER}
dans ce contexte.
%{LA-F:variable}
peut être utilisée pour effectuer
une sous-requête interne (basée sur le nom de fichier), afin de
déterminer la valeur finale de variable. La plupart du
temps, elle est identique à LA-U (voir ci-dessus).expression_de_comparaison est une expression rationnelle qui est appliquée à l'instance actuelle de chaîne_de_test. chaîne_de_test est d'abord évaluée, puis comparée à l'expression_de_comparaison.
expression_de_comparaison est en général une expression rationnelle compatible perl, mais vous disposez des syntaxes supplémentaires suivantes pour effectuer d'autres tests utiles sur chaîne_de_test :
!
' (point d'exclamation) pour inverser le résultat
de la condition, quelle que soit l'expression de
comparaison utilisée.""
(deux guillemets),
chaîne_de_test est comparée à la
chaîne vide.!-eq
.test de l'existence d'une
URL via une sous-requête
Vérifie si chaîne_de_test est une URL valide,
accessible à travers tous les contrôles d'accès du serveur
actuellement configurés pour ce chemin. C'est une
sous-requête interne qui effectue cette vérification - à
utiliser avec précautions car les performances du serveur
peuvent s'en trouver affectées !
Ce drapeau ne renvoie que des informations concernant le contrôle d'accès, l'authentification et l'autorisation. Il ne renvoie pas d'informations concernant le code d'état que le gestionnaire configuré (static file, CGI, proxy, etc...) aurait, quant à lui, retourné.
Si la chaîne_de_test contient la valeur spéciale
expr
, la chaîne de comparaison sera
traitée en tant qu'expression rationnelle de type ap_expr.
Dans l'exemple ci-dessous, on utilise -strmatch
pour comparer le REFERER
avec le nom d'hôte du
site afin de bloquer le hotlinking (référencement direct)
non désiré.
Vous pouvez aussi définir certains drapeaux pour
l'expression_de_comparaison en ajoutant ces
[
drapeaux]
comme troisième argument de la directive
RewriteCond
, où drapeaux est un
sous-ensemble séparé par des virgules des drapeaux suivants :
nocase|NC
'
(no case)ornext|OR
'
(ou condition suivante)novary|NV
'
(no vary)Exemple :
Pour réécrire la page d'accueil d'un site en fonction de
l'en-tête ``User-Agent:
'' de la requête, vous
pouvez utiliser ce qui suit :
Explications : si vous utilisez un navigateur qui s'identifie comme un navigateur de plateforme mobile (notez que l'exemple est incomplet car il existe de nombreuses autres plateformes mobiles), c'est la version pour mobile de la page d'accueil qui sera renvoyée. Dans le cas contraire, ce sera la page d'accueil standard.
La directive
Modèle est une
expression rationnelle
compatible perl. Ce avec quoi ce modèle est comparé dépend de l'endroit où
la directive
Dans un contexte de serveur virtuel
Dans un contexte de répertoire (sections
Le chemin où la règle est défini est supprimé du chemin correspondant du système de fichiers avant comparaison (jusqu'au slash final compris). En conséquence de cette suppression, les règles définies dans ce contexte n'effectuent des comparaisons qu'avec la portion du chemin du système de fichiers "en dessous" de l'endroit où la règle est définie.
Le chemin correspondant actuel du système de fichiers est déterminé par
des directives telles que
Si vous souhaitez faire une comparaison sur le nom
d'hôte, le port, ou la chaîne de requête, utilisez une
directive %{HTTP_HOST}
, %{SERVER_PORT}
, ou
%{QUERY_STRING}
.
RewriteEngine On
" et
"Options FollowSymLinks
". Si l'administrateur a désactivé
la possibilité de modifier l'option FollowSymLinks
au
niveau du répertoire d'un utilisateur, vous ne pouvez pas utiliser le
moteur de réécriture. Cette restriction a été instaurée à des fins de
sécurité.%{REQUEST_URI}
dans la directive
^/
ne correspondra jamais dans un contexte de répertoire.Pour quelques conseils à propos des
Dans mod_rewrite, on peut aussi utiliser le caractère NON
('!
') comme préfixe de modèle. Ceci vous permet
d'inverser la signification d'un modèle, soit pour dire
``si l'URL considérée ne correspond PAS à
ce modèle''. Le caractère NON peut donc être utilisé à
titre exceptionnel, lorsqu'il est plus simple d'effectuer une
comparaison avec le modèle inversé, ou dans la dernière règle
par défaut.
$N
dans la chaîne de
substitution !
Dans une règle de réécriture, Substitution est la chaîne de caractères qui remplace le chemin de l'URL original qui correspondait au Modèle. Substitution peut être :
/www/file.html
, cette
dernière sera traitée comme un chemin d'URL à moins
qu'un répertoire nommé www
n'existe à la racine
de votre système de fichiers (ou dans le cas d'une
réécriture au sein d'un fichier .htaccess
,
relativement à la racine des documents), auquel cas la chaîne de
substitution sera traitée comme un chemin du système de
fichiers. Si vous désirez que d'autres directives de
correspondance d'URL (comme la directive [PT]
comme décrit ci-dessous.[R]
ci-dessous.-
(tiret)En plus du texte, la chaîne Substitution peut comporter :
$N
) vers le modèle
d'une directive RewriteRule%N
) vers le dernier
modèle d'une directive RewriteCond qui correspondait%{VARNAME}
)${nom correspondance:clé|défaut}
)Les références arrières sont des identificateurs de la forme
$
N (N=0..9), qui
seront remplacés par le contenu du Nème groupe
du Modèle qui correspondait. Les variables du serveur
sont les mêmes que dans la Chaîne_de_test d'une
directive
Chaque règle de réécriture s'applique au résultat de la règle
précédente, selon l'ordre dans lequel elles ont été définies dans
le fichier de configuration. Le chemin de l'URL ou du système de fichier (voir
ci-dessus Qu'est-ce qui est
comparé ?) est intégralement
remplacée par la chaîne de Substitution et le
processus de réécriture se poursuit jusqu'à ce que toutes les
règles aient été appliquées, ou qu'il soit explicitement stoppé
par un drapeau L
,
ou par un autre drapeau qui implique un arrêt immédiat, comme
END
ou
F
.
Par défaut, la chaîne de requête est transmise sans
modification. Vous pouvez cependant créer dans la chaîne de
substitution des URLs dont une partie constitue une chaîne de
requête. Pour cela, ajoutez simplement un point d'interrogation
dans la chaîne de substitution pour indiquer que le texte qui
suit doit être réinjecté dans la chaîne de requête. Pour
supprimer une chaîne de requête, terminez simplement la chaîne de
substitution par un point d'interrogation. Pour combiner les
nouvelles chaînes de requête avec les anciennes, utilisez le
drapeau [QSA]
.
En outre, vous pouvez spécifier des actions spéciales à effectuer en ajoutant
des
[
drapeaux]
comme troisième argument de la directive
Drapeaux et syntaxe | Fonction |
---|---|
B | Echappe les caractères non-alphanumériques dans les références arrières avant d'appliquer la transformation. détails ... |
backrefnoplus|BNP | Avec ce drapeau, si les références arrières sont échappées, les espaces seront échappés en %20 au lieu de +. Ceci s'avère utile lorsqu'une référence arrière est utilisée dans la partie chemin, et non dans la chaîne de paramètres de la requête ; pour plus de détails, voir ici. |
chain|C | La règle est chaînée avec la règle suivante. Si la règle échoue, la ou les règles avec lesquelles elle est est chaînée seront sautées. détails ... |
cookie|CO=NAME:VAL | Définit un cookie au niveau du navigateur client. La syntaxe complète est : CO=NAME:VAL:domain[:lifetime[:path[:secure[:httponly]]]] details ... détails ... |
discardpath|DPI | Supprime la partie PATH_INFO de l'URI réécrit. détails ... |
END | Stoppe le processus de réécriture immédiatement et n'applique plus aucune règle. Empêche aussi l'application ultérieure de règles de réécriture dans les contextes de répertoire et de fichier .htaccess (disponible à partir de la version 2.3.9 du serveur HTTP Apache). détails ... |
env|E=[!]VAR[:VAL] | Définit la variable d'environnement VAR (à la valeur VAL si elle est fournie). La variante !VAR annule la définition de la variable VAR.détails ... |
forbidden|F | Renvoie une réponse 403 FORBIDDEN au navigateur client. détails ... |
gone|G | Renvoie un message d'erreur 410 GONE au navigateur client. détails ... |
Handler|H=Gestionnaire de contenu | L'URI résultant est envoyé au Gestionnaire de contenu pour traitement. détails ... |
last|L | Arrête le processus de réécriture immédiatement et n'applique plus aucune règle. Prêtez une attention particulière aux mises en garde concernant les contextes de niveau répertoire et .htaccess (voir aussi le drapeau END). détails ... |
next|N | Réexécute le processus de réécriture à partir de la première règle, en utilisant le résultat du jeu de règles, sous réserve qu'il y ait un point de départ. détails ... |
nocase|NC | Rend la comparaison entre modèles insensible à la casse. détails ... |
noescape|NE | Empêche mod_rewrite d'effectuer un échappement hexadécimal des caractères spéciaux dans le résultat de la réécriture. détails ... |
nosubreq|NS | La règle est sautée si la requête courante est une sous-requête interne. détails ... |
proxy|P | Force l'envoi en interne de l'URL de substitution en tant que requête mandataire. détails ... |
passthrough|PT | L'URI résultant est repassé au moteur de mise en
correspondance des URLs pour y être traité par d'autres
traducteurs URI-vers-nom de fichier, comme Alias ou
Redirect . détails ... |
qsappend|QSA | Ajoute toute chaîne de paramètres présente dans l'URL de la requête originale à toute chaîne de paramètres créée dans la cible de réécriture. détails ... |
qsdiscard|QSD | Supprime toute chaîne de paramètres de l'URI entrant. détails ... |
qslast|QSL | Interprète le dernier (le plus à droite) point d'interrogation comme le délimiteur de la chaîne de paramètres de la requête, au lieu du premier (le plus à gauche) comme c'est le cas habituellement. Disponble à partir de la version 2.4.19 du serveur HTTP Apache. détails ... |
redirect|R[=code] | Force une redirection externe, avec un code de statut HTTP optionnel. détails ... |
skip|S=nombre | Si la règle courante s'applique, le moteur de réécriture doit sauter les nombre règles suivantes. détails ... |
type|T=MIME-type | Force l'attribution du |
Quand la chaîne de substitution commence par quelque chose comme
"/~user" (de manière explicite ou par références arrières), mod_rewrite
développe le répertoire home sans tenir compte de la présence ou de la
configuration du module
Ce développement n'est pas effectué si le drapeau PT est
utilisé dans la directive
Voici toutes les combinaisons de substitution et leurs significations :
Dans la configuration au niveau du serveur principal
(httpd.conf
)
pour la requête ``GET
/chemin/infochemin
'':
Règle | Résultat de la substitution |
---|---|
^/un_chemin(.*) autre_chemin$1 | invalide, non supporté |
^/un_chemin(.*) autre_chemin$1 [R] | invalide, non supporté |
^/un_chemin(.*) autre_chemin$1 [P] | invalide, non supporté |
^/un_chemin(.*) /autre_chemin$1 | /autre_chemin/info_chemin |
^/un_chemin(.*) /autre_chemin$1 [R] | http://cet_hote/autre_chemin/info_chemin via une redirection externe |
^/un_chemin(.*) /autre_chemin$1 [P] | sans objet, non supporté |
^/un_chemin(.*) http://cet_hote/autre_chemin$1 | /autre_chemin/info_chemin |
^/un_chemin(.*) http://cet_hote/autre_chemin$1 [R] | http://cet_hote/autre_chemin/info_chemin via une redirection externe |
^/un_chemin(.*) http://cet_hote/autre_chemin$1 [P] | sans objet, non supporté |
^/un_chemin(.*) http://autre_hote/autre_chemin$1 | http://autre_hote/autre_chemin/info_chemin via une redirection externe |
^/un_chemin(.*) http://autre_hote/autre_chemin$1 [R] | http://autre_hote/autre_chemin/info_chemin (le drapeau [R] est redondant) |
^/somepath(.*) http://otherhost/otherpath$1 [P] | http://otherhost/otherpath/pathinfo via internal proxy |
Dans une configuration de niveau répertoire pour
/chemin
(/chemin/physique/vers/chemin/.htacccess
, avec
RewriteBase "/chemin"
)
pour la requête ``GET
/chemin/chemin-local/infochemin
'':
Règle | Résultat de la substitution |
---|---|
^chemin-local(.*) autre-chemin$1 | /chemin/autre-chemin/infochemin |
^chemin-local(.*) autre-chemin$1 [R] | http://cet-hôte/chemin/autre-chemin/infochemin via redirection externe |
^chemin-local(.*) autre-chemin$1 [P] | n'a pas lieu d'être, non supporté |
^chemin-local(.*) /autre-chemin$1 | /autre-chemin/infochemin |
^chemin-local(.*) /autre-chemin$1 [R] | http://cet-hôte/autre-chemin/infochemin via redirection externe |
^chemin-local(.*) /autre-chemin$1 [P] | n'a pas lieu d'être, non supporté |
^chemin-local(.*) http://cet-hôte/autre-chemin$1 | /autre-chemin/infochemin |
^chemin-local(.*) http://cet-hôte/autre-chemin$1 [R] | http://cet-hôte/autre-chemin/infochemin via redirection externe |
^chemin-local(.*) http://cet-hôte/autre-chemin$1 [P] | n'a pas lieu d'être, non supporté |
^chemin-local(.*) http://autre hôte/autre-chemin$1 | http://autre hôte/autre-chemin/infochemin via redirection externe |
^chemin-local(.*) http://autre hôte/autre-chemin$1 [R] | http://autre hôte/autre-chemin/infochemin via redirection externe (le drapeau [R] est redondant) |
^chemin-local(.*) http://autre hôte/autre-chemin$1 [P] | http://autre hôte/autre-chemin/infochemin via un mandataire interne |