From fe39ffb8b90ae4e002ed73fe98617cd590abb467 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 08:33:50 +0200 Subject: Adding upstream version 2.4.56. Signed-off-by: Daniel Baumann --- docs/manual/mod/mod_rewrite.html.fr.utf8 | 1720 ++++++++++++++++++++++++++++++ 1 file changed, 1720 insertions(+) create mode 100644 docs/manual/mod/mod_rewrite.html.fr.utf8 (limited to 'docs/manual/mod/mod_rewrite.html.fr.utf8') diff --git a/docs/manual/mod/mod_rewrite.html.fr.utf8 b/docs/manual/mod/mod_rewrite.html.fr.utf8 new file mode 100644 index 0000000..fcb0752 --- /dev/null +++ b/docs/manual/mod/mod_rewrite.html.fr.utf8 @@ -0,0 +1,1720 @@ + + + + + +mod_rewrite - Serveur HTTP Apache Version 2.4 + + + + + + + + +
<-
+ +
+

Module Apache mod_rewrite

+
+

Langues Disponibles:  en  | + fr 

+
+ + + +
Description:Ce module fournit un moteur de réécriture à base de +règles permettant de réécrire les URLs des requêtes +à la volée
Statut:Extension
Identificateur de Module:rewrite_module
Fichier Source:mod_rewrite.c
+

Sommaire

+ +

Le module mod_rewrite utilise un moteur de + réécriture à base de règles, basé sur un interpréteur + 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 + requête interne à destination du mandataire.

+

mod_rewrite fournit une méthode souple et + puissante pour manipuler les URLs en utilisant un nombre illimité + de règles. Chaque règle peut être associée à un nombre illimité de + conditions, afin de vous permettre de réécrire les URLs en + fonction de variables du serveur, de variables d'environnement, + d'en-têtes HTTP, ou de repères temporels.

+

mod_rewrite agit sur la totalité de l'URL, y + compris la partie chemin. Une règle de réécriture peut être + invoquée dans 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.

+
+ +
top
+
+

Journalisation

+ +

mod_rewrite offre une journalisation détaillée + de ses actions aux niveaux de journalisation trace1 à + trace8. Le niveau de journalisation peut être défini de + manière spécifique à mod_rewrite via la directive + LogLevel : jusqu'au niveau + debug aucune action n'est journalisée, alors qu'elles + le sont pratiquement toutes au niveau trace8.

+ +
+ L'utilisation d'un niveau de journalisation élevé pour + mod_rewrite va ralentir votre serveur HTTP Apache + de manière dramatique ! N'utilisez un niveau de journalisation + supérieur à trace2 qu'à des fins de débogage ! +
+ +

Exemple

LogLevel alert rewrite:trace3
+
+ +

RewriteLog

+

Ceux qui sont familiers avec les versions précédentes de + mod_rewrite vont probablement rechercher en vain les + directives 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 à + mod_rewrite, affichez le fichier journal en + redirigeant la sortie vers grep :

+

+ tail -f error_log|fgrep '[rewrite:' +

+
+ +
+
top
+

Directive RewriteBase

+ + + + + + + + +
Description:Définit l'URL de base pour les réécritures au niveau +répertoire
Syntaxe:RewriteBase chemin_URL
Défaut:Pas de valeur par défaut
Contexte:répertoire, .htaccess
Surcharges autorisées:FileInfo
Statut:Extension
Module:mod_rewrite
+

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.16 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>
+ + + +
+
top
+

Directive RewriteCond

+ + + + + + + +
Description:Définit une condition qui devra être satisfaite pour que +la réécriture soit effectuée +
Syntaxe: RewriteCond + chaîne_de_test expression_de_comparaison [drapeaux]
Contexte:configuration globale, serveur virtuel, répertoire, .htaccess
Surcharges autorisées:FileInfo
Statut:Extension
Module:mod_rewrite
+

La directive RewriteCond permet de définir une + condition d'exécution d'une règle. Une ou plusieurs conditions + RewriteCond peuvent précéder une + directive RewriteRule. La règle de réécriture correspondante n'est + ainsi exécutée que si ces conditions sont satisfaites, + et si l'URI correspond au modèle spécifié dans la + règle.

+ +

TestString est une chaîne qui peut contenir les + extensions suivantes en plus du texte simple :

+ +
    +
  • + références arrières de règle de réécriture : + 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 + courant. $0 donne accès à l'ensemble de la chaîne + correspondant au modèle.
  • +
  • + Références arrières de condition de réécriture + : 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 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.
  • +
  • + extensions de table de réécriture : + ce sont des extensions de la forme ${nomTable:clé|défaut}. Voir la href="#mapfunc">documentation sur RewriteMap + pour plus de détails. +
  • +
  • + Variables du serveur : + ce sont des variables de la forme + %{ 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 UseCanonicalName et UseCanonicalPhysicalPort.

    + +

    Parmi les variables + spécifiques à mod_rewrite, ou trouve les suivantes :

    + +
    +
    API_VERSION
    + +
    C'est la version de l'API des modules Apache httpd + (l'interface interne entre le serveur et les modules) + pour la construction courante de httpd, telle qu'elle + est définie dans include/ap_mmn.h. La version de l'API + des modules correspond à la version du serveur Apache + httpd + utilisé (par exemple, pour la version 1.3.14 d'Apache + httpd, + il s'agit de la version 19990320:10), mais intéresse + principalement les auteurs de modules.
    + +
    CONN_REMOTE_ADDR
    + +
    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).
    + +
    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.
    + +
    REMOTE_ADDR
    +
    L'adresse IP de l'hôte distant (se référer au + module mod_remoteip).
    + +
    REQUEST_FILENAME
    + +
    Le chemin complet local au système de fichiers + du fichier ou du script correspondant + à la requête, s'il a déjà été déterminé par le serveur + 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. 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
    + +
    Contient le protocole de la requête (en général + "http" ou "https"). La valeur peut être modifiée par + 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é + 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 ::

+
    +
  1. +

    Les variables SCRIPT_FILENAME et + REQUEST_FILENAME contiennent toutes deux la valeur + du champ filename de la + structure interne request_recdu 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.

  2. + + +
  3. + %{ENV:variable}, où variable peut + correspondre à une variable d'environnement quelconque.
  4. +
  5. + %{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.
  6. + +
  7. Que mod_ssl soit chargé ou non, on peut + utiliser %{SSL:variable}, où variable + peut être remplacé par le nom d'une + variable + d'environnement SSL . Si mod_ssl n'est pas + chargé, cette variable contiendra toujours une chaîne vide. + Exemple : %{SSL:SSL_CIPHER_USEKEYSIZE} pourra + contenir la valeur 128. Ces variables sont + disponibles même si l'option StdEnvVars de la + directive SSLOptions n'a + pas été définie.
  8. + +
  9. + On peut utiliser %{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.

    +
  10. + +
  11. A des fins de référence avant, on peut utiliser, + %{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.

  12. + +
  13. + %{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).
  14. +
+ + +

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 : +

+ +
    +
  1. Vous pouvez préfixer l'expression avec un caractère + '!' (point d'exclamation) pour inverser le résultat + de la condition, quelle que soit l'expression de + comparaison utilisée.
  2. + +
  3. Vous pouvez effectuer des comparaisons lexicographiques de + chaînes : + +
    +
    <expression
    +
    infé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 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 + 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 + 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.
    + +
    <=expression de comparaison
    +
    inférieur ou égal à au sens lexicographique
    + 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 + 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 + 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 + sont identiques, caractère pour caractère).
    +
    +

    Note

    + L'opérateur de comparaison de chaînes fait partie des arguments de la + CondPattern et doit par conséquent se trouver entre les + guillemets s'ils sont présents. Exemple : + +
    RewriteCond %{HTTP_USER_AGENT} "=This Robot/1.0"
    + +
    + +
  4. + +
  5. + Vous pouvez effectuer des comparaisons d'entiers : +
    + +
    -eq
    +
    est numériquement égal à
    + 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, + et est comparée numériquement à l'expression de + comparaison. Vrai si chaîne_de_test est + numériquement 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, + et est comparée numériquement à l'expression de + comparaison. Vrai si chaîne_de_test est + numériquement + 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, + et est comparée numériquement à l'expression de + comparaison. Vrai si chaîne_de_test est + numériquement + 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, + et est comparée numériquement à l'expression de + comparaison. Vrai si chaîne_de_test est + numériquement + inférieure à expression_de_comparaison. + Attention à la confusion avec le drapeau -l + en utilisant la variante the -L ou + -h.
    + +
    -ne
    +
    Est numériquement non égal à
    + La Chaîne de test est considérée comme un entier et est + numériquement comparée à l'expression de comparaison. Vrai + si les deux éléments comparés sont numériquement différents. + Equivalent à !-eq.
    + +
    +
  6. + +
  7. Vous pouvez effectuer différents tests sur les attributs de + fichier : +
    + +
    -d
    +
    est un répertoire
    + 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 + 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, + 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 !
    + +
    -h
    +
    est un lien symbolique, selon la convention bash
    + Voir -l.
    + +
    -l
    +
    est un lien symbolique
    + 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 + avec les tests -lt ou -le.
    + +
    -L
    +
    est un lien symbolique, selon la convention bash
    + Voir -l.
    + +
    -s
    +
    est un fichier régulier d'une certaine taille
    + 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, + 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é.

    + +
    -x
    +
    a l'attribut d'exécution positionné
    + 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.
    + +
    + + Par exemple: + +
    RewriteCond /var/www/%{REQUEST_URI} !-f
    +RewriteRule ^(.+) /other/archive/$1 [R]
    + + +
  8. + +
  9. +

    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é. +

    + +
               RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
    +           RewriteRule "^/images" "-" [F]
    + +
  10. +
+ +

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)
    + 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 + vérification par sous-requêtes ou sur le système de + fichiers.
  • + +
  • + 'ornext|OR' + (ou condition suivante)
    + 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. +
  • + +
  • 'novary|NV' + (no vary)
    + Si la condition contient un en-tête HTTP, ce drapeau empêche + ce dernier d'être ajouté à l'en-tête Vary de la réponse.
    + L'utilisation de ce drapeau peut provoquer une mise en cache + incorrecte de la réponse, si la représentation de cette réponse + varie avec la valeur de l'en-tête considéré. Ce drapeau ne + devrait donc être utilisé que si l'on maîtrise parfaitement le + fonctionnement de l'en-tête 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 :

+ +
RewriteCond  "%{HTTP_USER_AGENT}"  "(iPhone|Blackberry|Android)"
+RewriteRule  "^/$"               "/homepage.mobile.html"  [L]
+
+RewriteRule  "^/$"                 "/homepage.std.html"  [L]
+ + +

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.

+ +

Par défaut, plusieurs directives RewriteCond + sont évaluées de manière séquentielle et combinées à l'aide d'un + ET logique. Si une condition n'est pas vérifiée et en + l'absence d'un opérateur logique OU, + l'ensemble du jeu de règles est abandonné et les conditions restantes ne + sont pas évaluées. +

+ + +
+
top
+

Directive RewriteEngine

+ + + + + + + + +
Description:Active ou désactive l'exécution du +moteur de réécriture
Syntaxe:RewriteEngine on|off
Défaut:RewriteEngine off
Contexte:configuration globale, serveur virtuel, répertoire, .htaccess
Surcharges autorisées:FileInfo
Statut:Extension
Module:mod_rewrite
+ +

La directive RewriteEngine active ou + désactive l'exécution du moteur de réécriture. Si sa valeur est + 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 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 + insérer une directive RewriteEngine on dans chaque + hôte virtuel pour lequel vous souhaitez utiliser des règles + de réécriture.

+ +

Les directives RewriteMap du type + 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 RewriteEngine n'a + pas été définie à on.

+ + +
+
top
+

Directive RewriteMap

+ + + + + + + +
Description:Définit une fonction de mise en correspondance pour la +recherche de mots-clés
Syntaxe:RewriteMap MapName MapType:MapSource [MapTypeOptions] +
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_rewrite
Compatibilité:Le troisième paramètre, MapTypeOptions, est disponible à partir +de la version 2.4.29 du serveur HTTP Apache
+

La directive RewriteMap définit une + Table de correspondance pour la réécriture que les + fonctions de mise en correspondance + peuvent utiliser dans les chaînes de substitution des règles + pour insérer/substituer des champs en recherchant des mots-clés. + La source utilisée pour cette recherche peut être de plusieurs + types.

+ +

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 + 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 MapSource + peuvent être utilisées :

+ +
+
txt
+
Un fichier texte contenant des paires clé-valeur séparées + par des espaces, une paire par ligne (Détails ...).
+ +
rnd
+
Sélection aléatoire d'une entrée depuis un fichier texte (Détails ...).
+ +
dbm
+
Recherche une entrée dans un fichier dbm contenant des + paires nom-valeur. Le condensé hash est élaboré à partir d'un + format de fichier texte via l'utilitaire httxt2dbm (Détails ...).
+ +
int
+
Une des quatre fonctions internes disponibles que fournit + RewriteMap: toupper, tolower, escape ou unescape + (Détails ...).
+ +
prg
+
Appelle un programme externe ou un script pour effectuer la + réécriture (Détails + ...).
+ +
dbd or fastdbd
+
Une commande SQL SELECT à exécuter pour rechercher la cible + de réécriture (Détails + ...).
+
+ +

Vous trouverez plus de détails et de nombreux exemples dans le RewriteMap HowTo.

+ + +
+
top
+

Directive RewriteOptions

+ + + + + + + +
Description:Configure certaines options spéciales +pour le moteur de réécriture
Syntaxe:RewriteOptions Options
Contexte:configuration globale, serveur virtuel, répertoire, .htaccess
Surcharges autorisées:FileInfo
Statut:Extension
Module:mod_rewrite
+ +

La directive RewriteOptions définit + certaines options spéciales pour la configuration au niveau du + serveur ou du répertoire. La chaîne de caractères Option + ne peut actuellement prendre qu'une des valeurs suivantes :

+ +
+
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 <Directory> du répertoire + parent sont héritées. Les règles héritées sont virtuellement + copiées dans la section où cette directive est utilisée. Si elles + sont utilisées avec des règles locales, les règles héritées sont + placées après ces dernières. La place de cette directive - avant + ou après les règles locales - n'a aucune influence sur ce + comportement. Si des règles locales ont forcé l'arrêt de la + réécriture, les règles héritées ne seront pas traitées.

+ +
+ Les règles héritées du niveau parent sont appliquées + after après les règles spécifiées dans le niveau + enfant. +
+
+ +
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, 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. Disponible à partir de la + version 2.4.16 du serveur HTTP Apache.

+
+ +
LegacyPrefixDocRoot
+
+ +

Avant la version 2.4.26, si une substitution était une URL absolue qui + correspondait au serveur virtuel courant, l'URL pouvait être tout d'abord + réduite à sa partie chemin, puis enfin en chemin local. Comme l'URL peut + être réduite en chemin local, le chemin doit être préfixé par la + valeur de la directive DocumentRoot, ce qui permet d'interdire l'accès à + un fichier tel que /tmp/myfile suite à une requête pour + http://host/file/myfile avec la RewriteRule suivante :

+
RewriteRule /file/(.*) http://localhost/tmp/$1
+ +

Cette option permet de restaurer l'ancien comportement lorsqu'un chemin + local obtenu à partir de la réduction d'une URL n'est pas préfixé par la + valeur de la directive DocumentRoot. Disponible à partir de la version + 2.4.26 du serveur HTTP Apache.

+
+ +
+ +
+
top
+

Directive RewriteRule

+ + + + + + + +
Description:Définit les règles pour le moteur de réécriture
Syntaxe:RewriteRule + Modèle Substitution [drapeaux]
Contexte:configuration globale, serveur virtuel, répertoire, .htaccess
Surcharges autorisées:FileInfo
Statut:Extension
Module:mod_rewrite
+

La directive RewriteRule est le + véritable cheval de trait de la réécriture. La directive peut + apparaître plusieurs fois, chaque instance définissant une + règle de réécriture particulière. L'ordre dans lequel ces règles + sont définies est important - il s'agit de l'ordre dans lequel + les règles seront appliquées au cours du processus de + réécriture.

+ +

Modèle est une + expression rationnelle + compatible perl. Ce avec quoi ce modèle est comparé dépend de l'endroit où + la directive RewriteRule est définie.

+ +

Qu'est-ce qui est comparé ?

+ +
    +
  • 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"). Il s'agit du URL-path décodé de sa valeur "%xx".

  • + +
  • 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 + 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}.

  • +
+ +
+ +

Réécritures dans un contexte de répertoire

+
    +
  • L'utilisation du moteur de réécriture dans les +fichiers .htaccess et les sections +<Directory> est un peu plus +complexe.
  • + +
  • Pour activer le moteur de réécriture dans ces contextes, vous devez +définir "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é.
  • + +
  • Voir la directive +RewriteBase pour plus de détails à +propos de l'ajout du préfixe après les substitutions relatives.
  • + +
  • Si vous souhaitez effectuer une comparaison en prenant en compte +l'intégralité du +chemin de l'URL dans un contexte de répertoire (htaccess), vous devez +utiliser la variable %{REQUEST_URI} dans la directive +RewriteCond.
  • + +
  • Le prefixe supprimé se termine toujours par un slash, ce qui +signifie que la comparaison s'effectue avec une chaîne qui ne comporte +jamais de slash de début. Ainsi, un modèle contenant +^/ ne correspondra jamais dans un contexte de répertoire.
  • + +
  • Bien que les règles de réécriture soient permises du point de vue de +la syntaxe dans les sections <Location> et <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.
  • + +
  • Les blocs If suivent les règles +du contexte de répertoire.
  • + +
  • Par défaut, mod_rewrite écrase les règles précédentes au sein de sections combinées appartenant au même +contexte. Pour modifier ce comportement, on peut utiliser la directive +RewriteOptions pour définir par +exemple l'option Inherit.
  • + +
  • La directive RewriteOptions +permet aussi de contrôler le comportement des sections définies au même niveau +d'imbrication dans la configuration. Dans l'exemple suivant, par défaut seule la +règle RewriteRules définie dans le second bloc If est prise en compte car celle définie dans le +premier bloc est écrasée. Définir RewriteOptions Inherit force mod_rewrite à +combiner les deux sections en prenant en compte les deux règles et pas seulement +la dernière.
  • +
+
<If "true">
+  # Sans RewriteOptions Inherit, cette règle est écrasée par celle de la section
+  # suivante et aucune redirection ne sera effectuée pour les URIs contenant
+  # 'foo'
+  RewriteRule foo http://example.com/foo [R]
+</If>
+<If "true">
+  RewriteRule bar http://example.com/bar [R]
+</If>
+
+
+ +

Pour quelques conseils à propos des expressions rationnelles, voir le + document Introduction à + mod_rewrite.

+ +

Dans mod_rewrite, on peut aussi utiliser le caractère + NOT ('!') 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.

+ +

Note

+Si vous utilisez le caractère NON pour inverser la signification d'un +modèle, vous ne pouvez pas inclure de parties génériques groupées dans +le modèle. Ceci est dû au fait que, lorsque le modèle ne correspond +pas (autrement dit, sa négation correspond), les groupes sont vides. +Ainsi, si vous utilisez des modèles inversés, vous ne pouvez +pas vous référer aux groupes par $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 :

+ +
+ +
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. 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
+ +
Un chemin relatif à la valeur de DocumentRoot vers la ressource qui + doit être servie. Notez que mod_rewrite + essaie de deviner si vous avez spécifié un chemin du système + de fichiers ou un chemin d'URL en vérifiant si la première + partie du chemin existe à la racine du système de fichiers. + Par exemple, si vous avez spécifié comme chaîne de + 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 (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 Alias) soient appliquées au + chemin d'URL résultant, utilisez le drapeau [PT] + comme décrit ci-dessous.
+ +
URL absolue
+ +

Si une URL absolue est spécifiée, + mod_rewrite vérifie si le nom d'hôte + correspond à celui de l'hôte local. Si c'est le cas, le + protocole et le nom d'hôte sont supprimés, et ce qui reste est + traité comme un chemin d'URL. Dans le cas contraire, une + redirection externe vers l'URL indiquée est effectuée. Pour + forcer une redirection externe vers l'hôte local, voir le + drapeau [R] ci-dessous.

+

Notez qu'une redirection (implicite ou non) qui utilise une URI + absolue inclura la chaîne de paramètres de la requête ; pour éviter + ceci, voir le drapeau [QSD] ci-dessous.

+ +
- (tiret)
+ +
Un tiret indique qu'aucune substitution ne doit être + effectuée (le chemin considéré est transmis sans changement). + Ceci est utile quand un drapeau doit être appliqué sans + modifier le chemin (voir ci-dessous).
+ +
+ +

En plus du texte, la chaîne Substitution peut + comporter :

+ +
    +
  1. des références arrières ($N) vers le modèle + d'une directive RewriteRule
  2. + +
  3. des références arrières (%N) vers le dernier + modèle d'une directive RewriteCond qui correspondait
  4. + +
  5. des variables du serveur comme dans les chaînes de test de + condition d'une règle (%{VARNAME})
  6. + +
  7. des appels de + fonctions de comparaison + (${nom correspondance:clé|défaut})
  8. +
+ +

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 RewriteCond. Les + fonctions de comparaison sont issues de la directive RewriteMap dans la + section de laquelle elles sont décrites. Ces trois types de + variables sont évaluées dans l'ordre ci-dessus.

+ +

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.

+ +

Modifier la chaîne de requête

+

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 + RewriteRule. Séparés par des virgules au sein d'une + liste encadrée par des crochets, les drapeaux peuvent + être choisis dans la table suivante. Vous trouverez plus de + détails, et des exemples pour chaque drapeau dans le document à propos des drapeaux de + réécriture.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Drapeaux et syntaxeFonction
BEchappe les caractères non-alphanumériques + dans les références arrières avant + d'appliquer la transformation. détails ...
backrefnoplus|BNPAvec 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|CLa 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:VALDéfinit un cookie au niveau du navigateur client. La syntaxe + complète est : + CO=NAME:VAL:domain[:lifetime[:path[:secure[:httponly[samesite]]]]] details ... + détails ... +
discardpath|DPISupprime la partie PATH_INFO de l'URI réécrit. détails + ...
ENDStoppe 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|FRenvoie une réponse 403 FORBIDDEN au navigateur client. + détails ...
gone|GRenvoie un message d'erreur 410 GONE au navigateur client. détails ...
Handler|H=Gestionnaire de contenuL'URI résultant est envoyé au Gestionnaire de + contenu pour traitement. détails ...
last|LArrê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|NRé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|NCRend la comparaison entre modèles insensible à la casse. + détails ...
noescape|NEEmpêche mod_rewrite d'effectuer un échappement hexadécimal + des caractères spéciaux dans le résultat des réécritures qui aboutissent + à une redirection. détails ...
nosubreq|NSLa règle est sautée si la requête courante est une + sous-requête interne. détails ...
proxy|PForce l'envoi en interne de l'URL de substitution en tant + que requête mandataire. détails + ...
passthrough|PTL'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|QSAAjoute 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|QSDSupprime toute chaîne de paramètres de l'URI entrant. détails + ...
qslast|QSLInterprè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=nombreSi la règle courante s'applique, le moteur de réécriture + doit sauter les nombre règles suivantes. détails ...
type|T=MIME-typeForce l'attribution du Type-MIME + spécifié au fichier cible. détails ...
+ +

Développement du répertoire home

+

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 mod_userdir.

+ +

Ce développement n'est pas effectué si le drapeau PT est +utilisé dans la directive RewriteRule

+
+ +

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ègleRésultat de la substitution
^/un_chemin(.*) autre_chemin$1invalide, 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$1http://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ègleRé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$1http://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
+ + +
+
+
+

Langues Disponibles:  en  | + fr 

+
top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.
+
+ \ No newline at end of file -- cgit v1.2.3