From: Lucien Gentis
DocumentRoot
(c'est à
+ DocumentRoot
(c'est à
dire que pour y accéder, il n'est pas nécessaire d'utiliser
une directive telle qu'Alias
).Alias
ou le module
+ 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
. RewriteCond
- chaîne_de_test expression_de_comparaison
Si chaîne_de_test contient la valeur spéciale +
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
@@ -517,12 +518,13 @@ la r
!
' (point d'exclamation) pour inverser le résultat
- de la condition, quelle que soit l'expression_de_comparaison utilisée.test de l'existence d'une URL via une sous-requête
+
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
@@ -704,7 +712,7 @@ RewriteRule ^(.+) /other/archive/$1 [R]
Si la chaîne_de_test contient la valeur spéciale
- expr
, la chaîne_de_comparaison sera
+ expr
, la chaîne de comparaison sera
traitée en tant qu'expression rationnelle de type ap_expr.
@@ -718,13 +726,14 @@ RewriteRule ^(.+) /other/archive/$1 [R] RewriteRule "^/images" "-" [F]
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 :
+ sous-ensemble séparé par des virgules des drapeaux suivants :
nocase|NC
'
@@ -765,8 +774,7 @@ RewriteRule ...r
fonctionnement de l'en-tête Vary.
Exemple :
@@ -775,17 +783,18 @@ RewriteRule ...r pouvez utiliser ce qui suit :RewriteCond "%{HTTP_USER_AGENT}" "(iPhone|Blackberry|Android)" -RewriteRule "^/$" "/homepage.mobile.html" [L] +RewriteRule "^/$" "/homepage.mobile.html" [L] -RewriteRule "^/$" "/homepage.std.html" [L]+RewriteRule "^/$" "/homepage.std.html" [L]
Explications : si vous utilisez un navigateur - qui s'identifie comme un navigateur de mobile (notez que cet - exemple est incomplet car il existe de nombreuses autres - plateformes mobiles), c'est la version mobile de la page - d'accueil qui sera servie. Dans le cas contraire, vous verrez - s'afficher la page d'accueil 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. @@ -845,8 +854,7 @@ recherche de mots-cl La source utilisée pour cette recherche peut être de plusieurs types. -MapName - 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 :
@@ -873,7 +881,7 @@ recherche de mots-clPar exemple, vous pouvez définir une directive
RewriteMap
comme suit
RewriteMap "map-exemple" "txt:/chemin/vers/fichier/map.txt"+
RewriteMap map-exemple "txt:/chemin/vers/fichier/map.txt"
Vous pourrez ensuite utiliser cette table dans une @@ -883,7 +891,7 @@ recherche de mots-cl
Les combinaisons suivantes pour type de correspondance - et source de la correspondance + et MapSource peuvent être utilisées :
InheritDown
AllowNoSlash
Par défaut, mod_rewrite
ignore les URLs qui
@@ -1053,21 +1060,23 @@ pour le moteur de r
de l'URI réécrite, comme indiqué dans les liens ci-dessus.
MergeBase
Avec cette option, la valeur de la directive RewriteBase
est copiée depuis le
- répertoire où elle est explicitement définie dans tout
- sous-répertoire qui ne définit pas sa propre directive RewriteBase
. C'était le
- comportement par défaut de la version 2.4.0 à la version 2.4.3, et
- cette option permet de le rétablir à partir de la version 2.4.4 du
- serveur HTTP Apache.
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), +
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
@@ -1101,45 +1110,44 @@ pour le moteur de r
Modèle est une 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, ou, dans un contexte de répertoire (voir - ci-dessous), au chemin de l'URL relativement à ce contexte de - répertoire. - Les expressions suivantes sont comparées à la sortie de - la dernière règle de réécriture qui - correspondait.
+ compatible perl. Ce avec quoi ce modèle est comparé dépend de l'endroit où + la directiveRewriteRule
est définie.
Dans un contexte de serveur virtuel VirtualHost
, le modèle est tout
+
Dans un contexte de serveur virtuel VirtualHost
, le modèle est tout
d'abord comparé à la portion de l'URL située entre le nom d'hôte
éventuellement accompagné du port, et la chaîne de paramètres (par
- exemple "/app1/index.html").
Dans les contextes de répertoire 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 le serveur vers la règle RewriteRule
(par
- exemple "app1/index.html" ou
- "index.html" selon l'endroit où les directives sont définies).
Dans un contexte de répertoire (sections Directory
et fichiers .htaccess), le
+ Modèle est comparé avec une partie de chemin ; par exemple une
+ requête pour "/app1/index.html" entraînera une comparaison avec
+ "app1/index.html" ou "index.html" selon l'endroit où la directive
+ RewriteRule
est définie.
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 DocumentRoot
et
+ Alias
, ou même le résultat de substitutions dans
+ des règles RewriteRule
précédentes.
+
Si vous souhaitez faire une comparaison sur le nom +
Si vous souhaitez faire une comparaison sur le nom
d'hôte, le port, ou la chaîne de requête, utilisez une
directive RewriteCond
comportant respectivement les variables
%{HTTP_HOST}
, %{SERVER_PORT}
, ou
- %{QUERY_STRING}
.
Dans tous les cas, il faut garder à l'esprit que les expressions
- rationnelles permettent de rechercher des correspondances de sous-chaînes.
- En d'autres termes, l'expression rationnelle n'a pas besoin de correspondre à
- l'ensemble de la chaîne, mais seulement à la partie que vous souhaitez
- voir correspondre. Ainsi, l'utilisation de l'expression .
est
- souvent suffisante et préférable à .*
, et l'expression
- abc
n'est pas identique à l'expression
- ^abc$
.
%{QUERY_STRING}
..htaccess
, le chemin de base du répertoire courant (autrement dit
-le chemin URI qui représente le répertoire contenant ce fichier
-.htaccess
) est automatiquement supprimé au cours de la
-comparaison avec le modèle de la règle de réécriture, et automatiquement
-ajouté lorsqu'une substitution relative (ne débutant pas par un slash
-ou un nom de protocole) arrive à la fin d'un jeu de règles. Voir la directive
+RewriteBase
pour plus de détails à
propos de l'ajout du préfixe après les substitutions relatives.En plus du texte, la chaîne Substition peut +
En plus du texte, la chaîne Substitution peut comporter :
$
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
@@ -1338,19 +1340,20 @@ substitution !