X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=docs%2Fmanual%2Fmod%2Fmod_rewrite.xml.fr;h=d0420f85de2d56bba6e343e7327a84c547b7d03b;hb=837aaea30f4ef8f1cf3ad1d3460acfa421d4ab7c;hp=ad6dae0f58666cae558e2df1546413b47dcd303c;hpb=8ee73a5b63989e8e4e995daf3f14e93c6f78c953;p=apache
diff --git a/docs/manual/mod/mod_rewrite.xml.fr b/docs/manual/mod/mod_rewrite.xml.fr
index ad6dae0f58..d0420f85de 100644
--- a/docs/manual/mod/mod_rewrite.xml.fr
+++ b/docs/manual/mod/mod_rewrite.xml.fr
@@ -1,7 +1,7 @@
-
+
@@ -37,7 +37,7 @@ règles permettant de réécrire les URLs des requêtes
Le module mod_rewrite utilise un moteur de
réécriture à base de règles, basé sur un interpréteur
- d'expressions rationnelles, pour réécrire les URLs à la volée. Par
+ d'expressions rationnelles PCRE, pour réécrire les URLs à la volée. Par
défaut, mod_rewrite met en correspondance une URL
avec le système de fichiers. Cependant, on peut aussi l'utiliser
pour rediriger une URL vers une autre URL, ou pour invoquer une
@@ -80,7 +80,9 @@ règles permettant de réécrire les URLs des requêtes
Exemple
+
LogLevel alert rewrite:trace3
+
RewriteLog
@@ -120,9 +122,10 @@ moteur de réécriture
mettra pas à jour les variables d'environnement
SCRIPT_URx
.
- Pour désactiver le module, il vaut mieux utiliser cette
- directive que commenter toutes les directives RewriteRule !
+ Plutôt que de commenter toutes les directives RewriteRule, il est préférable
+ d'utiliser cette directive si l'on souhaite désactiver les
+ règles de réécriture dans un contexte particulier.
Notez que les hôtes virtuels n'héritent pas des
configurations de réécriture. Ceci implique que vous devez
@@ -148,8 +151,6 @@ pour le moteur de réécriture
server configvirtual host
directory.htaccess
FileInfo
-MaxRedirects
n'est plus disponible depuis
-la version version 2.1
La directive RewriteOptions définit
@@ -188,8 +189,123 @@ la version version 2.1
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.
+ 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, mod_rewrite ignore les URLs qui
+ correspondent à un répertoire sur disque, mais ne comportent pas
+ de slash final, afin que le module mod_dir
+ redirige le client vers l'URL canonique avec un slash final.
+
+ Lorsque la directive DirectorySlash est définie à off, il
+ est possible de spécifier l'option 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 RewriteRule se situe dans un
+ contexte de serveur virtuel
ou de serveur principal,
+ mod_rewrite ne traitera les règles de réécriture
+ que si l'URI de la requête respecte la syntaxe d'un chemin URL. Ceci permet
+ d'éviter certains problèmes de sécurité où des règles
+ particulières pourraient permettre des développements de modèles
+ inattendus (voir CVE-2011-3368
+ et CVE-2011-4317).
+ Pour s'affranchir de la restriction relative à la syntaxe des chemins URL, on peut
+ utiliser l'option AllowAnyURI
, afin de permettre à
+ mod_rewrite d'appliquer le jeu de règles à toute
+ chaîne de requête URI, sans vérifier si cette dernière respecte la
+ grammaire des chemins URL définie dans la spécification HTTP.
+ Disponible depuis la version 2.4.3 du serveur HTTP Apache.
+
+
+ Avertissement à propos de la sécurité
+
+ 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 RewriteBase est recopiée depuis
+ une valeur explicitement définie dans tout sous-répertoire qui ne
+ définit pas sa propre directive RewriteBase. Il s'agissait du
+ comportement par défaut avec les versions 2.4.0 à 2.4.3, et ce
+ drapeau qui permet de retrouver ce comportement est disponible
+ depuis la version 2.4.4 du serveur HTTP Apache.
+
+
+ IgnoreContextInfo
+
+
+ Lors d'une
+ substitution relative dans un contexte de répertoire (htaccess),
+ et si la directive RewriteBase n'a pas été définie,
+ ce module utilise des informations en provenance d'une extension
+ d'URL et du contexte du système de fichiers pour transformer la
+ sustitution relative en URL. Par exemple, les modules
+ mod_userdir et mod_alias
+ utilisent ces informations de contexte étendu.
@@ -201,13 +317,10 @@ la version version 2.1
RewriteMap
Définit une fonction de mise en correspondance pour la
recherche de mots-clés
-RewriteMap nom de la correspondance type de
-correspondance:source de la correspondance
+RewriteMap MapName MapType:MapSource MapTypeOptions
server configvirtual host
-Il est possible de choisir entre plusieurs types de
-bases de données depuis la version 2.0.41 du serveur HTTP Apache
La directive RewriteMap définit une
@@ -218,24 +331,21 @@ bases de données depuis la version 2.0.41 du serveur HTTP Apache
-
nom de la
- correspondance est le nom de la table de correspondance
+
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 :
- ${
nom de la
- correspondance :
+ ${
MapName :
mot-clé }
- ${
nom de la
- correspondance :
+ ${
MapName :
mot-clé |
valeur par défaut
}
Lorsqu'une telle construction est rencontrée, la table de
- correspondance Nom de la correspondance est consultée
+ 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,
@@ -248,19 +358,24 @@ bases de données depuis la version 2.0.41 du serveur HTTP ApachePar exemple, vous pouvez définir une directive
RewriteMap comme suit
-
+
RewriteMap map-exemple txt:/chemin/vers/fichier/map.txt
-
+
Vous pourrez ensuite utiliser cette table dans une
directive RewriteRule comme suit :
-
+
RewriteRule ^/ex/(.*) ${map-exemple:$1}
-
+
+
+ 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 source de la correspondance
+ et MapSource
peuvent être utilisées :
@@ -287,12 +402,12 @@ bases de données depuis la version 2.0.41 du serveur HTTP Apacheprg
- Appelle un programme externe ou un script pour effectuer la
- réécriture (Détails
+ réécriture (Détails
...).
- dbd or fastdbd
- Une commande SQL SELECT à exécuter pour rechercher la cible
- de réécriture (Détails
+ de réécriture (Détails
...).
@@ -306,57 +421,56 @@ href="../rewrite/rewritemap.html">RewriteMap HowTo.
RewriteBase
Définit l'URL de base pour les réécritures au niveau
répertoire
-RewriteBase chemin URL
+RewriteBase chemin_URL
Pas de valeur par défaut
directory.htaccess
FileInfo
- La directive RewriteBase définit
- explicitement le chemin URL de base (et non le chemin du
- répertoire dans le système de fichiers !) pour les réécritures dans un contexte
- de répertoire dont le résultat est la substitution d'un
- chemin relatif. Lorsque vous utilisez une directive RewriteRule dans un fichier
- .htaccess
, mod_rewrite enlève le
- préfixe de répertoire local avant d'effectuer le traitement, puis
- réécrit ce qui reste de l'URL. Lorsque la réécriture est terminée,
- mod_rewrite ajoute automatiquement le préfixe de
- répertoire local (ou la valeur de la directive
- RewriteBase si cette dernière est définie)
- à la chaîne de substitution avant de la remettre à disposition du
- serveur, comme s'il s'agissait de l'URL d'origine.
-
- Cette directive est requise pour les réécritures
- dans un contexte de répertoire défini via la directive
- Alias lorsque la
- substitution utilise un chemin relatif.
-
- Si votre chemin URL n'existe pas réellement dans le système de
- fichiers, ou ne trouve pas directement sous le répertoire défini
- par la directive DocumentRoot, vous devez utiliser la
- directive RewriteBase dans chaque fichier
- .htaccess
où vous voulez utiliser des directives RewriteRule.
-
- L'exemple ci-dessous montre comment faire correspondre
- http://example.com/mon-appli/index.html à
- /home/www/exemple/nouveau_site.html dans un fichier
- .htaccess
. On suppose que le contenu disponible à
- http://example.com/ se situe sur le disque à
- /home/www/exemple/.
-
-
-
-RewriteEngine On
-# Le chemin URL utilisé pour arriver dans ce contexte, et non le chemin
-# du système de fichiers
-RewriteBase /mon-appli/
-RewriteRule ^index\.html$ nouveau_site.html
-
-
+ La directive RewriteBase permet de
+ spécifier le préfixe d'URL à utiliser dans un contexte de
+ répertoire (htaccess) pour les directives
+ RewriteRule qui réécrivent vers un chemin
+ relatif.
+ 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 :
+
+ - La requête initiale, ainsi que la substitution, se
+ situent par raport à la valeur de la directive
+ DocumentRoot (c'est à
+ dire que pour y accéder, il n'est pas nécessaire d'utiliser
+ une directive telle qu'Alias).
+ - Le chemin du système de fichiers vers le répertoire
+ contenant la RewriteRule, suffixé par
+ la substitution relative est aussi valide en tant qu'URL sur
+ le serveur (ce qui est rare).
+ - A partir de la version 2.4.11 du serveur HTTP Apache,
+ cette directive peut être omise lorsque la requête est mise en
+ correspondance avec le système de fichiers via la directive
+ Alias ou le module
+ mod_userdir.
+
+
+Dans l'exemple ci-dessous, la directive
+RewriteBase est nécessaire afin d'éviter une
+réécriture en http://example.com/opt/myapp-1.2.3/welcome.html car la
+ressource n'était pas relative à la racine des documents. Cette erreur
+de configuration aurait conduit le serveur à rechercher un répertoire
+"opt" à la racine des documents.
+
+
+DocumentRoot /var/www/example.com
+AliasMatch ^/myapp /opt/myapp-1.2.3
+<Directory /opt/myapp-1.2.3>
+ RewriteEngine On
+ RewriteBase /myapp/
+ RewriteRule ^index\.html$ welcome.html
+</Directory>
+
@@ -368,7 +482,7 @@ RewriteRule ^index\.html$ nouveau_site.html
la réécriture soit effectuée
RewriteCond
- chaîne de test expression de comparaison
+ chaîne_de_test expression_de_comparaison
server configvirtual host
directory.htaccess
FileInfo
@@ -401,8 +515,8 @@ la réécriture soit effectuée
: ce sont des références arrières de la forme
%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
+ 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.
@@ -428,26 +542,30 @@ la réécriture soit effectuée
- HTTP_USER_AGENT
- HTTP_REFERER
+ HTTP_ACCEPT
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
- HTTP_ACCEPT
+ 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
- REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
- PATH_INFO
- QUERY_STRING
- AUTH_TYPE
|
|
@@ -460,9 +578,11 @@ la réécriture soit effectuée
DOCUMENT_ROOT
+ SCRIPT_GROUP
+ SCRIPT_USER
+ SERVER_ADDR
SERVER_ADMIN
SERVER_NAME
- SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
@@ -481,12 +601,14 @@ la réécriture soit effectuée
|
API_VERSION
- THE_REQUEST
- REQUEST_URI
- REQUEST_FILENAME
- IS_SUBREQ
+ CONN_REMOTE_ADDR
HTTPS
- REQUEST_SCHEME
+ IS_SUBREQ
+ REMOTE_ADDR
+ REQUEST_FILENAME
+ REQUEST_SCHEME
+ REQUEST_URI
+ THE_REQUEST
|
@@ -494,8 +616,10 @@ la réécriture soit effectuée
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 ailleurs dans le
- manuel ou dans la spécification CGI.
+ 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
- IS_SUBREQ
-
- - Contient le texte "true" si la requête en cours
- de traitement est une sous-requête, "false" dans le
- cas contraire. Une sous-requête est générée quand un
- module a besoin de se référer à des fichiers ou URIs
- addidionnels pour pouvoir mener à bien sa tâche.
-
API_VERSION
- C'est la version de l'API des modules Apache httpd
@@ -527,21 +643,30 @@ la réécriture soit effectuée
il s'agit de la version 19990320:10), mais intéresse
principalement les auteurs de modules.
- THE_REQUEST
+ CONN_REMOTE_ADDR
- - La ligne de requête HTTP complète envoyée par le
- navigateur au serveur (par exemple, "
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.
+ - A partir de la version 2.4.8 : l'adresse IP distante de
+ la connexion (voir le module
+ mod_remoteip).
+
+ HTTPS
+
+ - Contient le texte "on" si la connexion
+ utilise SSL/TLS, "off" dans le cas contraire
+ (Cette variable peut être utilisée sans problème, que
+ mod_ssl soit chargé ou non).
- REQUEST_URI
+ IS_SUBREQ
+
+ - Contient le texte "true" si la requête en cours
+ de traitement est une sous-requête, "false" dans le
+ cas contraire. Une sous-requête est générée quand un
+ module a besoin de se référer à des fichiers ou URIs
+ addidionnels pour pouvoir mener à bien sa tâche.
- - La partie chemin de l'URI de la requête, comme
- "/index.html". En particulier, ceci exclut la chaîne
- de paramètres qui est quant à elle disponible via sa
- propre variable
QUERY_STRING
.
+ REMOTE_ADDR
+ - L'adresse IP de l'hôte distant (se référer au
+ module mod_remoteip).
REQUEST_FILENAME
@@ -551,14 +676,12 @@ la réécriture soit effectuée
au moment où on y fait référence. Dans le cas
contraire, et en particulier dans le cas d'un serveur
virtuel, REQUEST_FILENAME
contient la
- valeur de REQUEST_URI
.
-
- HTTPS
-
- - Contient le texte "on" si la connexion
- utilise SSL/TLS, "off" dans le cas contraire
- (Cette variable peut être utilisée sans problème, que
- mod_ssl soit chargé ou non.
+ valeur de REQUEST_URI
. En fonction de la
+ valeur de la directive AcceptPathInfo, le serveur
+ peut n'utiliser que certains éléments de tête du
+ REQUEST_URI
pour déterminer à quel
+ fichier correspond la requête.
REQUEST_SCHEME
@@ -567,15 +690,33 @@ la réécriture soit effectuée
la directive ServerName.
+ REQUEST_URI
+
+ - La partie chemin de l'URI de la requête, comme
+ "/index.html". Ceci exclut en particulier la chaîne de
+ paramètres de la requête qui est contenue dans la
+ variable
QUERY_STRING
.
+
+ THE_REQUEST
+
+ - La ligne de requête HTTP complète envoyée par le
+ navigateur au serveur (par exemple, "
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é
+
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.
+ href="../expr.html">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 ::
@@ -644,7 +785,7 @@ la réécriture soit effectuée
- A des fins de référence avant, on peut utiliser,
-
%{LA-U:variable}
, qui
+ %{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
@@ -670,22 +811,23 @@ la réécriture soit effectuée
- expression de comparaison est une expression
+
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
+ chaîne_de_test. chaîne_de_test est d'abord
évaluée, puis comparée à
- l'expression de comparaison.
+ l'expression_de_comparaison.
- expression de comparaison est en général une
+
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 :
+ d'autres tests utiles sur chaîne_de_test :
- Vous pouvez préfixer l'expression avec un caractère
- '
!
' (point d'exclamation) pour indiquer une
- expression de non-correspondance.
+ '!
' (point d'exclamation) pour inverser le résultat
+ de la condition, quelle que soit l'expression de
+ comparaison utilisée.
- Vous pouvez effectuer des comparaisons lexicographiques de
chaînes :
@@ -695,45 +837,45 @@ la réécriture soit effectuée
lexicographique)
Traite l'expression comme une chaîne de
caractères et la compare lexicographiquement à
- chaîne de test. La condition est satisfaite si
- chaîne de test est inférieure au sens
+ chaîne_de_test. La condition est satisfaite si
+ chaîne_de_test est inférieure au sens
lexicographique à l'expression.
- '>expression' (supérieur au sens
lexicographique)
Traite l'expression comme une chaîne de
caractères et la compare lexicographiquement à
- chaîne de test. La condition est satisfaite si
- chaîne de test est supérieure au sens
+ chaîne_de_test. La condition est satisfaite si
+ chaîne_de_test est supérieure au sens
lexicographique à l'expression.
- '=expression' (égal au sens
lexicographique)
Traite l'expression comme une chaîne de
caractères et la compare lexicographiquement à
- chaîne de test. La condition est satisfaite si
- chaîne de test est égale au sens
+ chaîne_de_test. La condition est satisfaite si
+ chaîne_de_test est égale au sens
lexicographique à l'expression (les deux chaînes
sont exactement identiques, caractère pour caractère). Si
expression est ""
(deux guillemets),
- chaîne de test est comparée à la chaîne vide.
+ chaîne_de_test est comparée à la chaîne vide.
- '<=expression de comparaison' (inférieur ou égal à
au sens lexicographique)
- Considère l'expression de comparaison comme une
+ Considère l'expression_de_comparaison comme une
chaîne de caractères et la compare au sens lexicographique à
- la chaîne de test. Vrai si chaîne de test
- précède lexicographiquement expression de comparaison, ou est
- égale à expression de comparaison (les deux chaînes
+ la chaîne_de_test. Vrai si chaîne_de_test
+ précède lexicographiquement expression_de_comparaison, ou est
+ égale à expression_de_comparaison (les deux chaînes
sont identiques, caractère pour caractère).
- '>=expression de comparaison'
(supérieur ou égal à au sens lexicographique)
- Considère l'expression de comparaison comme une
+ Considère l'expression_de_comparaison comme une
chaîne de caractères et la compare au sens lexicographique à
- la chaîne de test. Vrai si chaîne de test
- suit lexicographiquement expression de comparaison, ou est
- égale à expression de comparaison (les deux chaînes
+ la chaîne_de_test. Vrai si chaîne_de_test
+ suit lexicographiquement expression_de_comparaison, ou est
+ égale à expression_de_comparaison (les deux chaînes
sont identiques, caractère pour caractère).
@@ -742,43 +884,43 @@ la réécriture soit effectuée
- '-eq' (est numériquement égal à)
- La chaîne de test est considérée comme un entier,
+ La chaîne_de_test est considérée comme un entier,
et est comparée numériquement à l'expression de
comparaison. Vrai si les deux expressions sont
numériquement égales.
- '-ge' (est numériquement supérieur ou
égal à)
- La chaîne de test est considérée comme un entier,
+ La chaîne_de_test est considérée comme un entier,
et est comparée numériquement à l'expression de
- comparaison. Vrai si chaîne de test est
+ comparaison. Vrai si chaîne_de_test est
numériquement
- supérieure ou égale à expression de comparaison.
+ supérieure ou égale à expression_de_comparaison.
- '-gt' (est numériquement supérieur à)
- La chaîne de test est considérée comme un entier,
+ La chaîne_de_test est considérée comme un entier,
et est comparée numériquement à l'expression de
- comparaison. Vrai si chaîne de test est
+ comparaison. Vrai si chaîne_de_test est
numériquement
- supérieure à expression de comparaison.
+ supérieure à expression_de_comparaison.
- '-le' (est numériquement inférieur ou
égal à)
- La chaîne de test est considérée comme un entier,
+ La chaîne_de_test est considérée comme un entier,
et est comparée numériquement à l'expression de
- comparaison. Vrai si chaîne de test est
+ comparaison. Vrai si chaîne_de_test est
numériquement
- inférieure ou égale à expression de comparaison.
+ inférieure ou égale à expression_de_comparaison.
Attention à la confusion avec le drapeau -l
en utilisant la variante the -L ou
-h.
- '-lt' (est numériquement inférieur à)
- La chaîne de test est considérée comme un entier,
+ La chaîne_de_test est considérée comme un entier,
et est comparée numériquement à l'expression de
- comparaison. Vrai si chaîne de test est
+ comparaison. Vrai si chaîne_de_test est
numériquement
- inférieure à expression de comparaison.
+ inférieure à expression_de_comparaison.
Attention à la confusion avec le drapeau -l
en utilisant la variante the -L ou
-h.
@@ -792,17 +934,17 @@ la réécriture soit effectuée
- '-d' (est un répertoire -
directory)
- Traite chaîne de test comme un chemin et vérifie
+ Traite chaîne_de_test comme un chemin et vérifie
s'il existe ou pas, et s'il s'agit d'un répertoire.
- '-f' (est un
fichier régulier)
- Traite chaîne de test comme un chemin et vérifie
+ Traite chaîne_de_test comme un chemin et vérifie
s'il existe ou pas, et s'il s'agit d'un fichier régulier.
- '-F' (test de l'existence d'un fichier
via une sous-requête)
- Vérifie si chaîne de test est un fichier valide,
+ Vérifie si chaîne_de_test est un fichier 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 - à
@@ -814,7 +956,7 @@ la réécriture soit effectuée
Voir -l.
- '-l' (est un lien symbolique)
- Considère la chaîne de test comme un chemin et
+ Considère la chaîne_de_test comme un chemin et
vérifie son existence et si elle est un lien symbolique. On
peut aussi utiliser la convention bash -L
ou -h lorsqu'il y a risque de confusion
@@ -826,35 +968,37 @@ la réécriture soit effectuée
- '-s' (est un fichier régulier d'une
certaine taille)
- Considère la chaîne de test comme un chemin et
+ Considère la chaîne_de_test comme un chemin et
vérifie son existence et si elle est un fichier régulier
d'une taille supérieure à zéro.
- - '-U' (test de l'existence d'une
- URL via une sous-requête)
- Vérifie si chaîne de test est une URL valide,
+ '-U' (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 !
+ 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é.
- '-x' (a l'attribut d'exécution positionné)
- Considère la chaîne de test comme un chemin et
+ Considère la chaîne_de_test comme un chemin et
vérifie son existence et si elle a son attribut d'exécution
positionné. Ce positionnement est déterminé en fonction de
l'OS sous-jacent.
-Note :
- Tous ces tests peuvent aussi être préfixés par un point
- d'exclamation ('!') pour inverser leur signification.
-
-
-
Si la chaîne de test contient la valeur spéciale
+
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.
@@ -866,14 +1010,14 @@ la réécriture soit effectuée
non désiré.
-
+
RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
RewriteRule ^/images - [F]
-
+
- Vous pouvez aussi définir certains drapeaux pour
- l'expression de comparaison en ajoutant ces
+ l'expression_de_comparaison en ajoutant ces
[
drapeaux]
comme troisième argument de la directive
RewriteCond
, où drapeaux est un
@@ -884,10 +1028,10 @@ la réécriture soit effectuée
(no case)
Rend le test insensible à la casse - il n'est pas fait de
distinction entre majuscules et minuscules, à la fois dans le
- développement de chaîne de test et dans
- expression de comparaison. Ce drapeau n'est pris en
- compte que lors d'une comparaison entre chaîne de test
- et expression de comparaison. Il ne l'est pas pour les
+ développement de chaîne_de_test et dans
+ expression_de_comparaison. Ce drapeau n'est pris en
+ compte que lors d'une comparaison entre chaîne_de_test
+ et expression_de_comparaison. Il ne l'est pas pour les
vérification par sous-requêtes ou sur le système de
fichiers.
@@ -897,14 +1041,12 @@ la réécriture soit effectuée
Permet de chaîner les conditions de règles avec un OU au
lieu du AND implicite. Exemple typique :
-
-
+
RewriteCond %{REMOTE_HOST} ^host1 [OR]
RewriteCond %{REMOTE_HOST} ^host2 [OR]
RewriteCond %{REMOTE_HOST} ^host3
RewriteRule ...règles concernant tous ces hôtes...
-
-
+
Sans ce drapeau, les paires
condition/règle devraient être écrites trois fois.
@@ -930,31 +1072,20 @@ RewriteRule ...règles concernant tous ces hôtes...
l'en-tête ``User-Agent:
'' de la requête, vous
pouvez utiliser ce qui suit :
-
-
-RewriteCond %{HTTP_USER_AGENT} ^Mozilla
-RewriteRule ^/$ /homepage.max.html [L]
-
-RewriteCond %{HTTP_USER_AGENT} ^Lynx
-RewriteRule ^/$ /homepage.min.html [L]
+
+RewriteCond %{HTTP_USER_AGENT} (iPhone|Blackberry|Android)
+RewriteRule ^/$ /homepage.mobile.html [L]
RewriteRule ^/$ /homepage.std.html [L]
-
-
+
Explications : si vous utilisez un navigateur
- (Netscape Navigator, Mozilla etc) qui s'identifie comme
- 'Mozilla', vous accèderez à la page d'accueil max (qui
- peut contenir des frames, ou d'autres ressources
- particulières).
- Si vous utilisez le navigateur Lynx (qui est un navigateur
- en mode texte), vous accèderez à une page d'accueil min
- (qui peut être une version conçue pour une navigation simple
- basée sur le texte).
- Si aucune de ces conditions n'est satisfaite (vous utilisez tout
- autre navigateur, ou votre navigateur s'identifie de manière non
- standard), vous accèderez à la page d'accueil std
- (standard).
+ 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.
@@ -982,9 +1113,12 @@ RewriteRule ^/$ /homepage.std.html [L]
expression rationnelle
compatible perl. Dans la première règle de réécriture,
l'expression est comparée au (%-decoded)
- chemin de l'URL de la
- requête ; les expressions suivantes sont comparées à la sortie de
- la dernière règle de réécriture qui a été appliquée.
+ chemin de l'URL (ou au
+ chemin fichier, en
+ fonction du contexte) de la
+ requête. Les expressions suivantes sont comparées à la sortie de
+ la dernière règle de réécriture qui
+ correspondait.
Qu'est-ce qui est comparé ?
@@ -998,7 +1132,7 @@ RewriteRule ^/$ /homepage.std.html [L]
module="core">Directory et htaccess, le
modèle est tout d'abord comparé au chemin du système
de fichiers, après suppression du préfixe ou chemin de base
- ayant conduit à la règle RewriteRule (par
+ ayant conduit le serveur vers la règle RewriteRule (par
exemple "app1/index.html" ou
"index.html" selon l'endroit où les directives sont définies).
@@ -1051,8 +1185,11 @@ signifie que la comparaison s'effectue avec une chaîne qui ne comporte
- Bien que les règles de réécriture soient permises du point de vue de
la syntaxe dans les sections Location et Files, elles n'y sont pas prises en compte, et
-n'y sont à priori d'aucune utilité.
+module="core">Files (y compris leurs versions sous forme
+d'expression rationnelle), elles n'y sont pas prises en compte, et
+n'y sont à priori d'aucune utilité. Les substitutions
+relatives sont une fonctionnalité qui n'est, elle non-plus pas supportée
+dans ce genre de contexte.
@@ -1092,7 +1229,12 @@ substitution !
- un chemin du système de fichiers
- Il indique alors la localisation dans le système de
- fichiers de la ressource qui doit être envoyée au client.
+ fichiers de la ressource qui doit être envoyée au
+ client. Les substitutions ne sont traitées en tant que chemins du
+ système de fichiers que si la règle est configurée dans un
+ contexte de serveur (serveur virtuel), et si le premier
+ composant du chemin dans la substitution existe dans le système
+ de fichiers.
- chemin d'URL
@@ -1106,7 +1248,9 @@ substitution !
Substitution /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, auquel cas la chaîne de
+ 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 $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
+ sont les mêmes que dans la Chaîne_de_test d'une
directive RewriteCond
. Les fonctions de comparaison
sont issues de la directive RewriteMap
dans la
section de laquelle elles sont décrites. Ces trois types de
@@ -1164,7 +1308,7 @@ substitution !
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. L'URI du chemin du fichier (voir
+ 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
@@ -1202,18 +1346,29 @@ substitution !
href="../rewrite/flags.html">document à propos des drapeaux de
réécriture.
-
+
Drapeaux et syntaxe |
Fonction |
B |
- Echappe les caractères non-alphanumériques avant
+ | Echappe les caractères non-alphanumériques
+ dans les références arrières avant
d'appliquer la transformation. détails ... |
- chain|C |
+ 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. |
+ 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
@@ -1306,9 +1470,9 @@ substitution !
|
qsappend|QSA |
- Ajoute toute chaîne de paramètres créée dans la cible de
- réécriture à toute chaîne de paramètres présente dans l'URL de la
- requête originale. 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 ... |
@@ -1324,15 +1488,6 @@ substitution !
href="../rewrite/flags.html#flag_r">détails ...
-
- END |
- Arrête le processus de réécriture immédiatement et
- n'applique plus aucune règle. Empêche aussi l'exécution
- ultérieure de règles de réécriture dans des contextes de
- répertoire et des fichiers .htaccess (disponible depuis la
- version 2.3.9) détails ... |
-
skip|S=nombre |
Si la règle courante s'applique, le moteur de réécriture
@@ -1366,7 +1521,7 @@ utilisé dans la directive RewriteRule'':
-
+
Règle |
Résultat de la substitution |
@@ -1442,7 +1597,7 @@ redondant)
/chemin/chemin-local/infochemin'':
- |