From 7199f4a8a8d3920cec8d9775732caade33bbd95d Mon Sep 17 00:00:00 2001 From: Lucien Gentis Date: Sat, 26 Mar 2011 17:08:37 +0000 Subject: [PATCH] Update. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@1085771 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_rewrite.xml.fr | 468 ++++++++--------------------- 1 file changed, 132 insertions(+), 336 deletions(-) diff --git a/docs/manual/mod/mod_rewrite.xml.fr b/docs/manual/mod/mod_rewrite.xml.fr index 5dfbb19d176..07bc5e1e000 100644 --- a/docs/manual/mod/mod_rewrite.xml.fr +++ b/docs/manual/mod/mod_rewrite.xml.fr @@ -1,7 +1,7 @@ - + @@ -126,11 +126,8 @@ SCRIPT_URI=http://en1.engelschall.com/u/rse/
Solutions pratiques

Vous trouverez de nombreux exemples d'utilisation courante (et - moins courante) de mod_rewrite dans le - Guide de réécriture, - et dans le - Guide de réécriture avancée.

+ moins courante) de mod_rewrite dans la documentation spécifique à la réécriture.

@@ -1441,341 +1438,140 @@ substitution ! 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 parmi les suivants :

- -
-
'B' (références arrière échappées)
-

Les URLs doivent être non échappées pour pouvoir être - comparées par Apache, si bien que les références arrières - renverront une valeur non échappée au moment où elles seront - appliquées. En utilisant le drapeau B, les caractères non - alphanumériques des références arrières seront echappés. Par - exemple, considérons la règle :

-
 RewriteRule ^(.*)$ index.php?show=$1 
-

Elle va faire correspondre /C++ à - index.php?show=/C++. Mais elle va aussi faire - correspondre /C%2b%2b à - index.php?show=/C++, car le caractère - %2b n'a pas été échappé. Par contre, avec le - drapeau B, la substitution s'effectuera vers - index.php?show=/C%2b%2b.

-

Ce processus d'échappement est particulièrement nécessaire - dans le contexte du mandataire, où l'adresse d'arrière-plan ne - fonctionnera pas si elle se présente sous une forme - non échappée.

-
- -
'chain|C' - (chaînage avec la règle suivante)
- Ce drapeau effectue un chaînage entre la règle courante et la - suivante (qui peut elle-même être chaînée avec la suivante, et - ainsi de suite). Ceci provoque l'effet suivant : si une règle - correspond, le processus continue normalement - le drapeau n'a - aucun effet. Si la règle ne correspond pas, - toutes les règles chaînées suivantes sont ignorées. Par - exemple, ce drapeau peut être utilisé pour supprimer la - partie ``.www'', dans un jeu de règles au niveau - du répertoire, lorsque vous faites intervenir une redirection - externe (où la partie ``.www'' ne doit pas - figurer !).
- -
'cookie|CO=NAME:VAL:domain[:lifetime[:path[:secure[:httponly]]]]' - (définit un cookie)
- Ce drapeau définit un cookie au niveau du navigateur du client. - Le nom du cookie est spécifié par NOM, et sa valeur - par VAL. Le champ domaine est le domaine du - cookie, comme '.apache.org', le champ optionnel - durée de vie est la durée de vie du cookie en minutes, - et le champ optionnel path le chemin du cookie. Si - secure est défini à 'secure', 'true' ou '1', le cookie - ne sera transmis que via une connexion sécurisée. Si - httponly est défini à 'HttpOnly', 'true' ou '1', le - drapeau HttpOnly sera utilisé, rendant le cookie - inaccessible au code javascript pour les navigateurs qui - supportent cette fonctionnalité.
- -
'discardpathinfo|DPI' - (ignore PATH_INFO)
-

Dans un contexte de répertoire, l'URI avec lequel chaque - règle RewriteRule effectue sa comparaison - est la concaténation des valeurs courantes de l'URI et de - PATH_INFO.

- -

L'URI courant peut être l'URI initial tel qu'il a été envoyé - par le client, le résultat d'un traitement précédent de - l'ensemble de règles de mod_rewrite, ou le résultat de la règle - précédente du traitement courant de mod_rewrite.

- -

Paradoxalement, les information PATH_INFO ajoutées à l'URI - avant chaque règle ne représentent que la valeur qu'avait - PATH_INFO avant ce cycle de traitement des règles de - mod_rewrite. En conséquence, si de grandes parties de l'URI ont - été concernées par les règles et ont été copiées vers des - chaînes de substitution au cours du traitement de plusieurs - règles RewriteRule, sans considérer - quelles parties de l'URI provenaient des informations de - PATH_INFO courantes, l'URI final pourra se voir ajouter - plusieurs copies de PATH_INFO.

- -

Utilisez ce drapeau avec toute substitution où les - informations de PATH_INFO résultant de la mise en correspondance - précédente de cette requête avec le système de fichiers ne - présente pas d'intérêt. Ce drapeau permet d'ignorer les - informations de PATH_INFO élaborées avant le cycle de traitement - courant de mod_rewrite. PATH_INFO ne sera pas recalculé avant - que le cycle de traitement courant de mod_rewrite ne se termine. - Les règles suivantes de ce cycle de traitement ne verront que le - résultat direct des substitutions, sans aucune information - PATH_INFO ajoutée..

- -
'env|E=!VAR[:VAL]' - (définit une variable d'environnement)
- Ce drapeau force la définition d'une variable d'environnement nommée - VAR. La valeur, si elle est fournie, sera VAL, où - VAL peut contenir des références arrières vers des - expressions rationnelles ($N et %N) - qui seront évaluées. La forme !VAR annule - la définition de la variable d'environnement VAR qui, de - ce fait, peut plus recevoir aucune valeur VAL. - Vous pouvez utiliser ce drapeau plusieurs - fois pour définir plusieurs variables. Les variables peuvent - ensuite être déréférencées dans de nombreux cas, et le plus - souvent depuis XSSI (via <!--#echo - var="VAR"-->) ou CGI ($ENV{'VAR'}). - Vous pouvez déréférencer la variable dans un modèle de - directive RewriteCond ultérieure, en utilisant - %{ENV:VAR}. Ce drapeau permet de supprimer - des informations d'une URL, tout en conservant la trace de - ces informations.
- -
'forbidden|F' (force l'interdiction d'une - URL)
- Ce drapeau force l'interdiction de l'URL courante - il renvoie - immédiatement une réponse HTTP 403 (FORBIDDEN). Ce drapeau, - associé à des directives RewriteCond appropriées, permet de - bloquer de manière conditionnelle certaines URLs.
- -
'gone|G' (signale la non-existence d'une - URL)
- Ce drapeau signale la non-existence d'une URL - il renvoie - immédiatement une réponse HTTP 410 (GONE). Il permet de marquer - les pages qui n'existent plus comme "gone".
- -
- 'handler|H=Gestionnaire de contenu' - (impose un gestionnaire de contenu)
- Impose Gestionnaire de contenu comme gestionnaire de - contenu pour le fichier cible. Ce drapeau permet par exemple - de simuler la directive - ScriptAlias du - module mod_alias, qui impose en interne le - gestionnaire ``cgi-script'' à tous les fichiers - du répertoire correspondant.
- -
'last|L' - (dernière règle)
- Termine le processus de réécriture ici et n'applique plus - aucune règle de réécriture. Ce drapeau est équivalent à la - commande Perl last ou la commande C - break. Il permet d'éviter la réécriture par les - règles suivantes d'une URL déjà réécrite. Rappelez-vous - cependant que si une directive - RewriteRule génère une redirection - interne (ce qui arrive fréquemment lors d'une réécriture dans - un contexte de répertoire), la requête sera réinjectée et le - processus de réécriture sera réitéré à partir de la - première directive RewriteRule.
- -
'next|N' - (prochain round)
- Relance le processus de réécriture (toujours à partir de la - première règle). Cette fois, l'URL à comparer n'est plus l'URL - originale, mais plutôt l'URL renvoyée par la dernière règle de - réécriture. Ce drapeau est équivalent à la commande Perl - next ou la commande C continue. Il - permet de redémarrer le processus de réécriture - en se - positionnant immédiatement au niveau de la première règle. - Prenez garde à ne pas créer de bouclage - infini !
- -
'nocase|NC' - (insensible à la casse)
- Ce drapeau rend le Modèle insensible à la casse, - c'est à dire ne tenant pas compte des majuscules/minuscules - lorsque le Modèle est comparé avec l'URL - courante.
- -
- 'noescape|NE' - (pas d'échappement de l'URI en sortie)
- Ce drapeau empêche mod_rewrite d'appliquer les règles - d'échappement d'URI usuelles au résultat d'une réécriture. - Normalement, les caractère spéciaux (comme '%', '$', ';', - etc...) sont échappés en leurs équivalents hexadécimaux - (respectivement '%25', '%24', et '%3B') ; ce drapeau empêche - cela de se produire. Il permet au symbole '%' d'apparaître - en sortie, comme dans - - RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] - - qui remplacerait '/foo/zed' par la requête plus - sure '/bar?arg=P1=zed'. -
- -
- 'nosubreq|NS' - (sous-requêtes non concernées)
-

Si ce drapeau est présent, le moteur de réécriture - n'applique pas la règle si la requête courante est une - sous-requête interne. Par exemples, des sous-requêtes sont - générées en interne par Apache lorsque - mod_include essaie de trouver des - informations à propos d'éventuels fichiers de répertoire par - défaut (fichiers index.xxx). Dans le cas d'une - sous-requête, ce n'est pas toujours utile, et peut même - provoquer des erreurs si l'ensemble du jeu de règles est - appliqué. Ce drapeau permet d'exclure certaines règles.

-

Pour déterminer si l'on doit appliquer une règle ou pas, - si une URL est préfixée par un script CGI, pour forcer son - traitement par le script CGI, vous allez probablement - rencontrer des problèmes (ou tout du moins une surcharge - significative) avec les sous-requêtes. Dans ce cas, - utilisez ce drapeau

-
- -
- 'proxy|P' (impose le mandataire)
- Ce drapeau force l'envoi de la partie substitution en - interne en tant que requête mandataire, et (le processus de - réécriture s'arrête ici) son envoi immédiat vers le module proxy. Vous devez vous - assurer que la chaîne de substitution est un URI valide - (débutant typiquement par - http://nom d'hôte) pouvant être traitée - par le module proxy d'Apache. Si ce n'est pas le cas, le - module proxy vous renverra une erreur. Utilisez ce drapeau - pour implémenter de manière plus puissante la directive ProxyPass, pour mettre - en correspondance un contenu distant dans l'espace de - nommage du serveur local. - -

Note: mod_proxy doit être activé pour - pouvoir utiliser ce drapeau..

-
- -
- 'passthrough|PT' - (passage au gestionnaire suivant)
- Ce drapeau force le moteur de réécriture à affecter - la valeur du champ filename au - champ uri de la structure interne - request_rec. Ce drapeau n'est qu'une astuce - permettant un traitement supplémentaire de la sortie des - directives RewriteRule, en utilisant - Alias, ScriptAlias, - Redirect, ou d'autres directives en provenance - de divers traducteurs URI/nom de fichier. Par exemple, pour - réécrire /abc vers /def avec - mod_rewrite, puis /def vers - /ghi avec mod_alias : - - RewriteRule ^/abc(.*) /def$1 [PT]
- Alias /def /ghi -
- Si le drapeau PT est omis, - mod_rewrite va réécrire - uri=/abc/... vers filename=/def/... - comme tout traducteur URI/nom de fichier compatible avec - l'API doit le faire. Puis, mod_alias va tenter - une transition URI vers nom de fichier, et va échouer. - -

Note: Vous devez utiliser ce drapeau si vous - voulez mélanger des directives en provenance de différents - modules qui effectuent une traduction - URL/nom de fichier. Un exemple typique est - l'utilisation conjointe de mod_alias et de - mod_rewrite.

- -

Le drapeau PT rend implicite la présence du - drapeau L flag : la réécriture sera stoppée afin - de transmettre la requête à la phase suivante du - traitement.

-
- -
'qsappend|QSA' - (ajout d'une chaîne de requête)
- Ce drapeau force le moteur de réécriture à ajouter la chaîne - de substitution à la chaîne de requête au lieu de remplacer - cette dernière par la chaîne de substitution. - Vous pouvez ainsi ajouter des données à la chaîne de requête - via une règle de réécriture.
- -
'redirect|R - [=code]' (force une redirection)
-

Préfixe la chaîne de substitution par - http://hôte[:port]/ (ce qui fait de la nouvelle - URL un URI) pour forcer une redirection externe. Si aucun - code n'est défini, une réponse HTTP 302 (MOVED - TEMPORARILY) sera renvoyée. Si vous voulez renvoyer un autre - code de réponse, spécifiez simplement le nombre approprié ou - utilisez un des noms symboliques suivants : temp - (défaut), permanent ou seeother. - Vous pouvez utiliser ce drapeau pour que les règles mettent - l'URL sous forme canonique et la renvoient au client, pour - traduire ``/~'' en ``/u/'', ou pour - ajouter systématiquement un slash à - /u/utilisateur, etc...
- Note: Si vous utilisez ce drapeau, - assurez-vous que le champ de substitution est une URL - valide ! Si ce n'est pas le cas, vous serez redirigé vers - une URL invalide. Souvenez-vous que, s'il est seul, ce - drapeau va seulement préfixer l'URL par - http://hôte[:port]/, et que le processus de - réécriture va se poursuivre. En général, vous voudrez plutôt - stopper la réécriture à ce point, et rediriger immédiatement. - Pour stopper la réécriture, vous pouvez ajouter le drapeau - 'L'.

-

Bien qu'on utilise en général ce drapeau pour les - redirections, on peut spécifier tout code de statut valide. - Si le code de statut est en dehors de la gamme des codes de - redirection (300-399), la chaîne de Substitution est - supprimée et le processus de réécriture stoppé comme si le - drapeau L était présent.

-
- -
'skip|S=num' - (saute la/les règle(s) suivantes)
- Ce drapeau force le moteur de réécriture à sauter les - num règles consécutives suivantes, si la règle courante - s'applique. Il permet de simuler une structure if-then-else : la - dernière règle du bloc "then" devient skip=N, où N - est le nombre de règles contenues dans le bloc "else" (ce qui est - un comportement différent de celui du drapeau 'chain|C' !).
- -
- 'type|T=type MIME' - (force le type MIME)
- Force le type MIME du fichier cible à - type MIME. Ceci permet de définir le type de contenu - en fonction de certaines conditions. Par exemple, l'extrait - suivant permet aux fichiers .php d'être - affichés par mod_php s'ils sont appelés - avec l'extension .phps : - - RewriteRule ^(.+\.php)s$ $1 [T=application/x-httpd-php-source] - -
-
- + RewriteRule. Flags est une liste de valeurs + déparées par des virgules, délimitée par des crochets, choisies + parmi les drapeaux de la table suivante. Vous trouverez plus de + détails et d'exemples, pour chaque drapeau, dans la documentation sur les drapeaux de + réécriture.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Flag and syntaxFunction
BEscape non-alphanumeric characters before applying + the transformation. details ...
chain|CRule is chained to the following rule. If the rule fails, + the rule(s) chained to it will be skipped. details ...
cookie|CO=NAME:VALSets a cookie in the client browser. Full syntax is: + CO=NAME:VAL[:domain[:lifetime[:path[:secure[:httponly]]]]] details ... +
discardpath|DPICauses the PATH_INFO portion of the rewritten URI to be + discarded. details + ...
env|E=[!]VAR[:VAL]Causes an environment variable VAR to be set (to the + value VAL if provided). The form !VAR causes + the environment variable VAR to be unset.details ...
forbidden|FReturns a 403 FORBIDDEN response to the client browser. + details ...
gone|GReturns a 410 GONE response to the client browser. details ...
Handler|H=Content-handlerCauses the resulting URI to be sent to the specified + Content-handler for processing. details ...
last|LStop the rewriting process immediately and don't apply any + more rules. Especially note caveats for per-directory and + .htaccess context (see also the END flag). details ...
next|NRe-run the rewriting process, starting again with the first + rule, using the result of the ruleset so far as a starting + point. details + ...
nocase|NCMakes the pattern pattern comparison case-insensitive. + details ...
noescape|NEPrevent mod_rewrite from applying hexcode escaping of + special characters in the result of the rewrite. details ...
nosubreq|NSCauses a rule to be skipped if the current request is an + internal sub-request. details ...
proxy|PForce the substitution URL to be internally sent as a proxy + request. details + ...
passthrough|PTForces the resulting URI to be passed back to the URL + mapping engine for processing of other URI-to-filename + translators, such as Alias or + Redirect. details ...
qsappend|QSAAppends any query string created in the rewrite target to + any query string that was in the original request URL. details ...
redirect|R[=code]Forces an external redirect, optionally with the specified + HTTP status code. details ... +
skip|S=numTells the rewriting engine to skip the next num + rules if the current rule matches. details ...
type|T=MIME-typeForce the MIME-type of the target file + to be the specified type. details ...
Développement du répertoire home

Quand la chaîne de substitution commence par quelque chose comme -- 2.47.2