64N/A<?
xml version="1.0" encoding="ISO-8859-1"?>
64N/A XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 64N/A This file is generated from xml source: DO NOT EDIT 64N/A XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 64N/A<
title>mod_rewrite - Serveur Apache HTTP</
title>
64N/A<
div id="page-header">
64N/A<
p class="apache">Serveur Apache HTTP Version 2.5</
p>
64N/A<
div class="up"><
a href="./"><
img title="<-" alt="<-" src="/images/left.gif" /></
a></
div>
64N/A<
div id="page-content">
64N/A<
div id="preamble"><
h1>Module Apache mod_rewrite</
h1>
64N/A<
div class="toplang">
64N/A<
p><
span>Langues Disponibles: </
span><
a href="/en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English"> en </
a> |
64N/A<
table class="module"><
tr><
th><
a href="module-dict.html#Description">Description:</
a></
th><
td>Ce module fournit un moteur de r��criture � base de
64N/Ar�gles permettant de r��crire les URLs des requ�tes
64N/A� la vol�e</
td></
tr>
64N/A<
tr><
th><
a href="module-dict.html#ModuleIdentifier">Identificateur�de�Module:</
a></
th><
td>rewrite_module</
td></
tr>
64N/A r��criture � base de r�gles, bas� sur un interpr�teur
64N/A d'expressions rationnelles PCRE, pour r��crire les URLs � la vol�e. Par
64N/A avec le syst�me de fichiers. Cependant, on peut aussi l'utiliser
64N/A pour rediriger une URL vers une autre URL, ou pour invoquer une
requ�te interne � destination du mandataire.</
p>
<
p><
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> 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.</
p>
<
p><
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> agit sur la totalit� de l'URL, y
compris la partie chemin. Une r�gle de r��criture peut �tre
invoqu�e dans <
code>
httpd.conf</
code> ou dans un fichier
<
code>.htaccess</
code>. 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.</
p>
<
p>Vous trouverez d'avantage de d�tails, discussions et exemples
<
a href="/rewrite/">documentation d�taill�e
<
div id="quickview"><
h3 class="directives">Directives</
h3>
<
li><
img alt="" src="/images/down.gif" /> <
a href="#rewritebase">RewriteBase</
a></
li>
<
li><
img alt="" src="/images/down.gif" /> <
a href="#rewritecond">RewriteCond</
a></
li>
<
li><
img alt="" src="/images/down.gif" /> <
a href="#rewriteengine">RewriteEngine</
a></
li>
<
li><
img alt="" src="/images/down.gif" /> <
a href="#rewritemap">RewriteMap</
a></
li>
<
li><
img alt="" src="/images/down.gif" /> <
a href="#rewriteoptions">RewriteOptions</
a></
li>
<
li><
img alt="" src="/images/down.gif" /> <
a href="#rewriterule">RewriteRule</
a></
li>
<
li><
img alt="" src="/images/down.gif" /> <
a href="#logging">Journalisation</
a></
li>
</
ul><
ul class="seealso"><
li><
a href="#comments_section">Commentaires</
a></
li></
ul></
div>
<
div class="top"><
a href="#page-header"><
img alt="top" src="/images/up.gif" /></
a></
div>
<
h2><
a name="logging" id="logging">Journalisation</
a></
h2>
<
p><
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> offre une journalisation d�taill�e
de ses actions aux niveaux de journalisation <
code>trace1</
code> �
<
code>trace8</
code>. Le niveau de journalisation peut �tre d�fini de
mani�re sp�cifique � <
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> via la directive
<
code class="directive"><
a href="/mod/core.html#loglevel">LogLevel</
a></
code> : jusqu'au niveau
<
code>debug</
code> aucune action n'est journalis�e, alors qu'elles
le sont pratiquement toutes au niveau <
code>trace8</
code>.</
p>
L'utilisation d'un niveau de journalisation �lev� pour
<
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> va ralentir votre serveur HTTP Apache
de mani�re dramatique ! N'utilisez un niveau de journalisation
sup�rieur � <
code>trace2</
code> qu'� des fins de d�bogage !
<
div class="example"><
h3>Exemple</
h3><
pre class="prettyprint lang-config">
LogLevel alert rewrite:trace3
<
div class="note"><
h3>RewriteLog</
h3>
<
p>Ceux qui sont familiers avec les versions pr�c�dentes de
<
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> vont probablement rechercher en vain les
directives <
code>RewriteLog</
code> et
<
code>RewriteLogLevel</
code>. Elles ont �t� en effet remplac�es
par une configuration de la journalisation par module, comme
<
p>Pour extraire les traces sp�cifiques �
<
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code>, affichez le fichier journal en
redirigeant la sortie vers grep :</
p>
<
div class="example"><
p><
code>
tail -f error_log|fgrep '[rewrite:'
<
div class="top"><
a href="#page-header"><
img alt="top" src="/images/up.gif" /></
a></
div>
<
div class="directive-section"><
h2><
a name="RewriteBase" id="RewriteBase">RewriteBase</
a> <
a name="rewritebase" id="rewritebase">Directive</
a></
h2>
<
table class="directive">
<
tr><
th><
a href="directive-dict.html#Description">Description:</
a></
th><
td>D�finit l'URL de base pour les r��critures au niveau
<
tr><
th><
a href="directive-dict.html#Syntax">Syntaxe:</
a></
th><
td><
code>RewriteBase <
em>chemin URL</
em></
code></
td></
tr>
<
tr><
th><
a href="directive-dict.html#Default">D�faut:</
a></
th><
td><
code>Pas de valeur par d�faut</
code></
td></
tr>
<
tr><
th><
a href="directive-dict.html#Context">Contexte:</
a></
th><
td>r�pertoire, .htaccess</
td></
tr>
<
p>La directive <
code class="directive">RewriteBase</
code> permet de
sp�cifier le pr�fixe d'URL � utiliser dans un contexte de
r�pertoire (htaccess) pour les directives
<
code class="directive">RewriteRule</
code> qui r��crivent vers un chemin
<
p>Cette directive est <
em>obligatoire</
em> 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
<
li>La requ�te initiale, ainsi que la substitution, sont dans
la <
code class="directive"><
a href="/mod/core.html#documentroot">DocumentRoot</
a></
code> (c'est �
dire que pour y acc�der, il n'est pas n�cessaire d'utiliser
une directive telle qu'<
code class="directive"><
a href="/mod/mod_alias.html#alias">Alias</
a></
code>).</
li>
<
li>Le chemin du syst�me de fichiers vers le r�pertoire
contenant la <
code class="directive">RewriteRule</
code>, suffix� par
la substitution relative est aussi valide en tant qu'URL sur
le serveur (ce qui est rare).</
li>
<
p>Dans l'exemple ci-dessous, la directive
<
code class="directive">RewriteBase</
code> est n�cessaire afin d'�viter une
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.</
p>
<
pre class="prettyprint lang-config">
<
div class="top"><
a href="#page-header"><
img alt="top" src="/images/up.gif" /></
a></
div>
<
div class="directive-section"><
h2><
a name="RewriteCond" id="RewriteCond">RewriteCond</
a> <
a name="rewritecond" id="rewritecond">Directive</
a></
h2>
<
table class="directive">
<
tr><
th><
a href="directive-dict.html#Description">Description:</
a></
th><
td>D�finit une condition qui devra �tre satisfaite pour que
la r��criture soit effectu�e
<
em>cha�ne de test</
em> <
em>expression de comparaison</
em></
code></
td></
tr>
<
tr><
th><
a href="directive-dict.html#Context">Contexte:</
a></
th><
td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</
td></
tr>
<
p>La directive <
code class="directive">RewriteCond</
code> permet de d�finir une
condition d'ex�cution d'une r�gle. Une ou plusieurs conditions
<
code class="directive">RewriteCond</
code> peuvent pr�c�der une
directive <
code class="directive"><
a href="#rewriterule">RewriteRule</
a></
code>. La r�gle de r��criture correspondante n'est
ainsi ex�cut�e que si ces conditions sont satisfaites,
<
strong>et</
strong> si l'URI correspond au mod�le sp�cifi� dans la
<
p><
em>TestString</
em> est une cha�ne qui peut contenir les
extensions suivantes en plus du texte simple :</
p>
<
strong>r�f�rences arri�res de r�gle de r��criture</
strong> :
ce sont des r�f�rences arri�res de la forme
<
strong><
code>$N</
code></
strong> (0 <= N <= 9). $1 � $9
permettent d'acc�der aux parties regroup�es (entre
parenth�ses) du mod�le, issues de la <
code>RewriteRule</
code>
concern�e par le jeu de conditions <
code>RewriteCond</
code>
courant. $0 donne acc�s � l'ensemble de la cha�ne
correspondant au mod�le.</
li>
<
strong>R�f�rences arri�res de condition de r��criture
</
strong> : ce sont des r�f�rences arri�res de la forme
<
strong><
code>%N</
code></
strong> (0 <= N <= 9). %1 � %9
permettent d'acc�der aux parties regroup�es (entre
parenth�ses) du mod�le, issues de la <
code>RewriteRule</
code>
concern�e par le jeu de conditions <
code>RewriteCond</
code>
courant. %0 donne acc�s � l'ensemble de la cha�ne
correspondant au mod�le.</
li>
<
strong>extensions de table de r��criture</
strong> :
ce sont des extensions de la forme <
strong><
code>${nomTable:cl�|d�faut}</
code></
strong>. Voir la <
a>href="#mapfunc">documentation sur RewriteMap</
a>
<
strong>Variables du serveur</
strong> :
ce sont des variables de la forme
<
strong><
code>%{</
code> <
em>NAME_OF_VARIABLE</
em> <
code>}</
code></
strong>,
o� <
em>NOM_DE_VARIABLE</
em> peut contenir une cha�ne issue
<
th>En-t�tes HTTP :</
th> <
th>connexion & requ�te:</
th> <
th />
HTTP_PROXY_CONNECTION<
br />
<
th>variables internes au serveur :</
th> <
th>date et heure :</
th> <
th>sp�ciaux :</
th>
<
p>Ces variables correspondent toutes aux en-t�tes MIME
HTTP de m�mes noms, au variables C du serveur HTTP Apache, ou
aux champs <
code>struct tm</
code> du syst�me Unix. La
plupart d'entre elles sont document�es ailleurs dans le
manuel ou dans la sp�cification CGI.</
p>
<
p>SERVER_NAME et SERVER_PORT d�pendent respectivement
des valeurs des directives <
code class="directive"><
a href="/mod/core.html#usecanonicalname">UseCanonicalName</
a></
code> et <
code class="directive"><
a href="/mod/core.html#usecanonicalphysicalport">UseCanonicalPhysicalPort</
a></
code>.</
p>
sp�cifiques � mod_rewrite, ou trouve les suivantes :</
p>
<
dt><
code>IS_SUBREQ</
code></
dt>
<
dd>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.</
dd>
<
dt><
code>API_VERSION</
code></
dt>
<
dd>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
des modules correspond � la version du serveur Apache
utilis� (par exemple, pour la version 1.3.14 d'Apache
il s'agit de la version 19990320:10), mais int�resse
principalement les auteurs de modules.</
dd>
<
dt><
code>THE_REQUEST</
code></
dt>
<
dd>La ligne de requ�te HTTP compl�te envoy�e par le
navigateur au serveur (par exemple, "<
code>GET
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.</
dd>
<
dt><
code>REQUEST_URI</
code></
dt>
<
dd>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 <
code>QUERY_STRING</
code>.</
dd>
<
dt><
code>REQUEST_FILENAME</
code></
dt>
<
dd>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, <
code>REQUEST_FILENAME</
code> contient la
valeur de <
code>REQUEST_URI</
code>.</
dd>
<
dt><
code>HTTPS</
code></
dt>
<
dd>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
<
code class="module"><
a href="/mod/mod_ssl.html">mod_ssl</
a></
code> soit charg� ou non.</
dd>
<
dt><
code>REQUEST_SCHEME</
code></
dt>
<
dd>Contient le protocole de la requ�te (en g�n�ral
"http" ou "https"). La valeur peut �tre modifi�e par
la directive <
code class="directive"><
a href="/mod/core.html#servername">ServerName</
a></
code>.</
dd>
<
p>Si la <
em>cha�ne de test</
em> contient la valeur sp�ciale
<
code>expr</
code>, <
em>expression de comparaison</
em> sera trait�
en tant qu'expression rationnelle de type <
a href="/expr.html">ap_expr</
a>. Si des en-t�tes HTTP sont
r�f�renc�s dans l'expression rationnelle, et si le drapeau
<
code>novary</
code> n'est pas activ�, ils seront ajout�s �
<
p>Autres points � conna�tre ::</
p>
<
p>Les variables <
code>SCRIPT_FILENAME</
code> et
<
code>REQUEST_FILENAME</
code> contiennent toutes deux la valeur
du champ <
code>filename</
code> de la
structure interne <
code>request_rec</
code>du serveur HTTP Apache.
Le premier nom correspond au nom de variable bien connu CGI,
alors que le second est l'�quivalent de REQUEST_URI (qui
contient la valeur du champ <
code>uri</
code> de
<
code>request_rec</
code>).</
p>
<
p>Si une substitution intervient et si la r��criture se
poursuit, la valeur des deux variables sera mise � jour en
<
p>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
<
code>%{LA-U:REQUEST_FILENAME}</
code> pour d�terminer la valeur
finale de REQUEST_FILENAME.</
p></
li>
<
code>%{ENV:<
em>variable</
em>}</
code>, o� <
em>variable</
em> peut
correspondre � une variable d'environnement quelconque.</
li>
<
code>%{ENV:variable}</
code> est aussi disponible, o�
<
em>variable</
em> 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
<
code>getenv()</
code> � partir du processus du serveur Apache
<
li>Que <
code class="module"><
a href="/mod/mod_ssl.html">mod_ssl</
a></
code> soit charg� ou non, on peut
utiliser <
code>%{SSL:variable}</
code>, o� <
em>variable</
em>
peut �tre remplac� par le nom d'une
d'environnement SSL</
a> . Si <
code class="module"><
a href="/mod/mod_ssl.html">mod_ssl</
a></
code> n'est pas
charg�, cette variable contiendra toujours une cha�ne vide.
Exemple : <
code>%{SSL:SSL_CIPHER_USEKEYSIZE}</
code> pourra
contenir la valeur <
code>128</
code>.</
li>
On peut utiliser <
code>%{HTTP:en-t�te}</
code>, o�
<
em>en-t�te</
em> 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, <
code>%{HTTP:Proxy-Connection}</
code>
contiendra la valeur de l'en-t�te HTTP
"<
code>Proxy-Connection:</
code>".
Si on utilise un en-t�te HTTP
dans une condition, et si cette condition est �valu�e �
<
code>vrai</
code> 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 �
<
code>faux</
code>. L'ajout de l'en-t�te HTTP � l'en-t�te Vary
est n�cessaire � une mise en cache appropri�e.
<
p>Il faut garder � l'esprit que les conditions suivent une
logique de cout-circuit si le drapeau
'<
strong><
code>ornext|OR</
code></
strong>' est utilis�, et que de
ce fait, certaines d'entre elles ne seront pas �valu�es.</
p>
<
li>A des fins de r�f�rence avant, on peut utiliser,
<
code>%{LA-U:variable}</
code>, qui
permet d'effectuer une sous-requ�te interne � base d'URL, afin
de d�terminer la valeur finale de <
em>variable</
em>. 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.
<
p>Par exemple, pour effectuer une r��criture d�pendant de la
variable <
code>REMOTE_USER</
code> dans le contexte du serveur
principal (fichier <
code>
httpd.conf</
code>), vous devez utiliser
<
code>%{LA-U:REMOTE_USER}</
code> - cette variable est d�finie
par la phase d'autorisation qui intervient <
em>apr�s</
em> la
phase de traduction d'URL (pendant laquelle mod_rewrite op�re).</
p>
<
p>Par contre, comme mod_rewrite impl�mente son contexte de
r�pertoire (fichier <
code>.htaccess</
code>) via la phase Fixup
de l'API, et comme la phase d'autorisation intervient
<
em>avant</
em> cette derni�re, vous pouvez vous contenter
d'utiliser <
code>%{REMOTE_USER}</
code> dans ce contexte.</
p></
li>
<
code>%{LA-F:variable}</
code> 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 <
em>variable</
em>. La plupart du
temps, elle est identique � LA-U (voir ci-dessus).</
li>
<
p><
em>expression de comparaison</
em> est une expression
rationnelle qui est appliqu�e � l'instance actuelle de
<
em>cha�ne de test</
em>. <
em>cha�ne de test</
em> est d'abord
l'<
em>expression de comparaison</
em>.</
p>
<
p><
em>expression de comparaison</
em> est en g�n�ral une
<
em>expression rationnelle compatible perl</
em>, mais vous
disposez des syntaxes suppl�mentaires suivantes pour effectuer
d'autres tests utiles sur <
em>cha�ne de test</
em> :
<
li>Vous pouvez pr�fixer l'expression avec un caract�re
'<
code>!</
code>' (point d'exclamation) pour indiquer une
expression de <
strong>non</
strong>-correspondance.</
li>
<
li>Vous pouvez effectuer des comparaisons lexicographiques de
<
li>'<
strong><expression</
strong>' (inf�rieur au sens
Traite l'<
em>expression</
em> comme une cha�ne de
caract�res et la compare lexicographiquement �
<
em>cha�ne de test</
em>. La condition est satisfaite si
<
em>cha�ne de test</
em> est inf�rieure au sens
lexicographique � l'<
em>expression</
em>.</
li>
<
li>'<
strong>>expression</
strong>' (sup�rieur au sens
Traite l'<
em>expression</
em> comme une cha�ne de
caract�res et la compare lexicographiquement �
<
em>cha�ne de test</
em>. La condition est satisfaite si
<
em>cha�ne de test</
em> est sup�rieure au sens
lexicographique � l'<
em>expression</
em>.</
li>
<
li>'<
strong>=expression</
strong>' (�gal au sens
Traite l'<
em>expression</
em> comme une cha�ne de
caract�res et la compare lexicographiquement �
<
em>cha�ne de test</
em>. La condition est satisfaite si
<
em>cha�ne de test</
em> est �gale au sens
lexicographique � l'<
em>expression</
em> (les deux cha�nes
sont exactement identiques, caract�re pour caract�re). Si
<
em>expression</
em> est <
code>""</
code> (deux guillemets),
<
em>cha�ne de test</
em> est compar�e � la cha�ne vide.</
li>
<
li>'<
strong><=expression de comparaison</
strong>' (inf�rieur ou �gal �
au sens lexicographique)<
br />
Consid�re l'<
em>expression de comparaison</
em> comme une
cha�ne de caract�res et la compare au sens lexicographique �
la <
em>cha�ne de test</
em>. Vrai si <
em>cha�ne de test</
em>
pr�c�de lexicographiquement <
em>expression de comparaison</
em>, ou est
�gale � <
em>expression de comparaison</
em> (les deux cha�nes
sont identiques, caract�re pour caract�re).</
li>
<
li>'<
strong>>=expression de comparaison</
strong>'
(sup�rieur ou �gal � au sens lexicographique)<
br />
Consid�re l'<
em>expression de comparaison</
em> comme une
cha�ne de caract�res et la compare au sens lexicographique �
la <
em>cha�ne de test</
em>. Vrai si <
em>cha�ne de test</
em>
suit lexicographiquement <
em>expression de comparaison</
em>, ou est
�gale � <
em>expression de comparaison</
em> (les deux cha�nes
sont identiques, caract�re pour caract�re).</
li>
Vous pouvez effectuer des comparaisons d'entiers :
<
li>'<
strong>-eq</
strong>' (est num�riquement �gal �)<
br />
La <
em>cha�ne de test</
em> est consid�r�e comme un entier,
et est compar�e num�riquement � l'<
em>expression de
comparaison</
em>. Vrai si les deux expressions sont
num�riquement �gales.</
li>
<
li>'<
strong>-ge</
strong>' (est num�riquement sup�rieur ou
La <
em>cha�ne de test</
em> est consid�r�e comme un entier,
et est compar�e num�riquement � l'<
em>expression de
comparaison</
em>. Vrai si <
em>cha�ne de test</
em> est
sup�rieure ou �gale � <
em>expression de comparaison</
em>.</
li>
<
li>'<
strong>-gt</
strong>' (est num�riquement sup�rieur �)<
br />
La <
em>cha�ne de test</
em> est consid�r�e comme un entier,
et est compar�e num�riquement � l'<
em>expression de
comparaison</
em>. Vrai si <
em>cha�ne de test</
em> est
sup�rieure � <
em>expression de comparaison</
em>.</
li>
<
li>'<
strong>-le</
strong>' (est num�riquement inf�rieur ou
La <
em>cha�ne de test</
em> est consid�r�e comme un entier,
et est compar�e num�riquement � l'<
em>expression de
comparaison</
em>. Vrai si <
em>cha�ne de test</
em> est
inf�rieure ou �gale � <
em>expression de comparaison</
em>.
Attention � la confusion avec le drapeau <
strong>-l</
strong>
en utilisant la variante the <
strong>-L</
strong> ou
<
strong>-h</
strong>.</
li>
<
li>'<
strong>-lt</
strong>' (est num�riquement inf�rieur �)<
br />
La <
em>cha�ne de test</
em> est consid�r�e comme un entier,
et est compar�e num�riquement � l'<
em>expression de
comparaison</
em>. Vrai si <
em>cha�ne de test</
em> est
inf�rieure � <
em>expression de comparaison</
em>.
Attention � la confusion avec le drapeau <
strong>-l</
strong>
en utilisant la variante the <
strong>-L</
strong> ou
<
strong>-h</
strong>.</
li>
<
li>Vous pouvez effectuer diff�rents tests sur les attributs de
<
li>'<
strong>-d</
strong>' (est un r�pertoire -
<
strong>d</
strong>irectory)<
br />
Traite <
em>cha�ne de test</
em> comme un chemin et v�rifie
s'il existe ou pas, et s'il s'agit d'un r�pertoire.</
li>
<
li>'<
strong>-f</
strong>' (est un
<
strong>f</
strong>ichier r�gulier)<
br />
Traite <
em>cha�ne de test</
em> comme un chemin et v�rifie
s'il existe ou pas, et s'il s'agit d'un fichier r�gulier.</
li>
<
li>'<
strong>-F</
strong>' (test de l'existence d'un fichier
via une sous-requ�te)<
br />
V�rifie si <
em>cha�ne de test</
em> 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 !</
li>
<
li>'<
strong>-H</
strong>' (est un lien symbolique, selon la
Voir <
strong>-l</
strong>.</
li>
<
li>'<
strong>-l</
strong>' (est un lien symbolique)<
br />
Consid�re la <
em>cha�ne de test</
em> comme un chemin et
v�rifie son existence et si elle est un lien symbolique. On
peut aussi utiliser la convention bash <
strong>-L</
strong>
ou <
strong>-h</
strong> lorsqu'il y a risque de confusion
avec les tests <
strong>-lt</
strong> ou <
strong>-le</
strong>.</
li>
<
li>'<
strong>-L</
strong>' (est un lien symbolique, selon la
Voir <
strong>-l</
strong>.</
li>
<
li>'<
strong>-s</
strong>' (est un fichier r�gulier d'une
Consid�re la <
em>cha�ne de test</
em> comme un chemin et
v�rifie son existence et si elle est un fichier r�gulier
d'une taille sup�rieure � z�ro.</
li>
<
li>'<
strong>-U</
strong>' (test de l'existence d'une
<
strong>U</
strong>RL via une sous-requ�te)<
br />
V�rifie si <
em>cha�ne de test</
em> 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 !</
li>
<
li>'<
strong>-x</
strong>' (a l'attribut d'ex�cution positionn�)<
br />
Consid�re la <
em>cha�ne de test</
em> 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
<
div class="note"><
h3>Note :</
h3>
Tous ces tests peuvent aussi �tre pr�fix�s par un point
d'exclamation ('!') pour inverser leur signification.
<
p>Si la <
em>cha�ne de test</
em> contient la valeur sp�ciale
<
code>expr</
code>, la <
em>cha�ne de comparaison</
em> sera
trait�e en tant qu'expression rationnelle de type <
a href="/expr.html">ap_expr</
a>.</
p>
Dans l'exemple ci-dessous, on utilise <
code>-strmatch</
code>
pour comparer le <
code>REFERER</
code> avec le nom d'h�te du
site afin de bloquer le hotlinking (r�f�rencement direct)
<
pre class="prettyprint lang-config">
RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<
br />
RewriteRule ^/images - [F]
<
li>Vous pouvez aussi d�finir certains drapeaux pour
l'<
em>expression de comparaison</
em> en ajoutant ces
<
strong><
code>[</
code><
em>drapeaux</
em><
code>]</
code></
strong>
comme troisi�me argument de la directive
<
code>RewriteCond</
code>, o� <
em>drapeaux</
em> est un
sous-ensemble s�par� par des virgules des drapeaux suivants :
<
li>'<
strong><
code>nocase|NC</
code></
strong>'
(<
strong>n</
strong>o <
strong>c</
strong>ase)<
br />
Rend le test insensible � la casse - il n'est pas fait de
distinction entre majuscules et minuscules, � la fois dans le
d�veloppement de <
em>cha�ne de test</
em> et dans
<
em>expression de comparaison</
em>. Ce drapeau n'est pris en
compte que lors d'une comparaison entre <
em>cha�ne de test</
em>
et <
em>expression de comparaison</
em>. Il ne l'est pas pour les
v�rification par sous-requ�tes ou sur le syst�me de
'<
strong><
code>ornext|OR</
code></
strong>'
(<
strong>ou</
strong> condition suivante)<
br />
Permet de cha�ner les conditions de r�gles avec un OU au
lieu du AND implicite. Exemple typique :
<
pre class="prettyprint lang-config">
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.
<
li>'<
strong><
code>novary|NV</
code></
strong>'
(<
strong>n</
strong>o <
strong>v</
strong>ary)<
br />
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. <
br />
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.
<
p><
strong>Exemple :</
strong></
p>
<
p>Pour r��crire la page d'accueil d'un site en fonction de
l'en-t�te ``<
code>User-Agent:</
code>'' de la requ�te, vous
pouvez utiliser ce qui suit : </
p>
<
pre class="prettyprint lang-config">
RewriteCond %{HTTP_USER_AGENT} ^Mozilla
RewriteCond %{HTTP_USER_AGENT} ^Lynx
<
p>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
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
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
<
div class="top"><
a href="#page-header"><
img alt="top" src="/images/up.gif" /></
a></
div>
<
div class="directive-section"><
h2><
a name="RewriteEngine" id="RewriteEngine">RewriteEngine</
a> <
a name="rewriteengine" id="rewriteengine">Directive</
a></
h2>
<
table class="directive">
<
tr><
th><
a href="directive-dict.html#Description">Description:</
a></
th><
td>Active ou d�sactive l'ex�cution du
moteur de r��criture</
td></
tr>
<
tr><
th><
a href="directive-dict.html#Syntax">Syntaxe:</
a></
th><
td><
code>RewriteEngine on|off</
code></
td></
tr>
<
tr><
th><
a href="directive-dict.html#Default">D�faut:</
a></
th><
td><
code>RewriteEngine off</
code></
td></
tr>
<
tr><
th><
a href="directive-dict.html#Context">Contexte:</
a></
th><
td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</
td></
tr>
<
p>La directive <
code class="directive">RewriteEngine</
code> active ou
d�sactive l'ex�cution du moteur de r��criture. Si sa valeur est
<
code>off</
code>, ce module n'ex�cutera aucun traitement et ne
mettra pas � jour les variables d'environnement
<
code>SCRIPT_URx</
code>.</
p>
<
p>Pour d�sactiver le module, il vaut mieux utiliser cette
directive que commenter toutes les directives <
code class="directive"><
a href="#rewriterule">RewriteRule</
a></
code> !</
p>
<
p>Notez que les h�tes virtuels n'h�ritent pas des
configurations de r��criture. Ceci implique que vous devez
ins�rer une directive <
code>RewriteEngine on</
code> dans chaque
h�te virtuel pour lequel vous souhaitez utiliser des r�gles
<
p>Les directives <
code class="directive">RewriteMap</
code> du type
<
code>prg</
code> 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 <
code class="directive">RewriteEngine</
code> n'a
pas �t� d�finie � <
code>on</
code>.</
p>
<
div class="top"><
a href="#page-header"><
img alt="top" src="/images/up.gif" /></
a></
div>
<
div class="directive-section"><
h2><
a name="RewriteMap" id="RewriteMap">RewriteMap</
a> <
a name="rewritemap" id="rewritemap">Directive</
a></
h2>
<
table class="directive">
<
tr><
th><
a href="directive-dict.html#Description">Description:</
a></
th><
td>D�finit une fonction de mise en correspondance pour la
recherche de mots-cl�s</
td></
tr>
<
tr><
th><
a href="directive-dict.html#Syntax">Syntaxe:</
a></
th><
td><
code>RewriteMap <
em>nom de la correspondance</
em> <
em>type de
correspondance</
em>:<
em>source de la correspondance</
em>
<
tr><
th><
a href="directive-dict.html#Context">Contexte:</
a></
th><
td>configuration du serveur, serveur virtuel</
td></
tr>
<
p>La directive <
code class="directive">RewriteMap</
code> d�finit une
<
em>Table de correspondance pour la r��criture</
em> que les
fonctions de mise en correspondance
peuvent utiliser dans les cha�nes de substitution des r�gles
La source utilis�e pour cette recherche peut �tre de plusieurs
<
p><
a id="mapfunc" name="mapfunc"><
em>nom de la
correspondance</
em></
a> 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 :</
p>
<
strong><
code>${</
code> <
em>nom de la
correspondance</
em> <
code>:</
code>
<
em>mot-cl�</
em> <
code>}</
code><
br />
<
code>${</
code> <
em>nom de la
correspondance</
em> <
code>:</
code>
<
em>mot-cl�</
em> <
code>|</
code> <
em>valeur par d�faut</
em>
<
p>Lorsqu'une telle construction est rencontr�e, la table de
correspondance <
em>Nom de la correspondance</
em> est consult�e
et la cl� <
em>mot-cl�</
em> recherch�e. Si la cl� est trouv�e, la
construction est remplac�e par
la <
em>valeur de remplacement</
em>. Si la cl� n'est pas trouv�e,
elle est remplac�e par la <
em>valeur par d�faut</
em>, ou par une
cha�ne vide si aucune <
em>valeur par d�faut</
em> 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�.</
p>
<
p>Par exemple, vous pouvez d�finir une directive
<
code class="directive">RewriteMap</
code> comme suit </
p>
<
pre class="prettyprint lang-config">
<
p>Vous pourrez ensuite utiliser cette table dans une
directive <
code class="directive">RewriteRule</
code> comme suit :</
p>
<
pre class="prettyprint lang-config">
RewriteRule ^/ex/(.*) ${map-exemple:$1}
<
p>Les combinaisons suivantes pour <
em>type de correspondance</
em>
et <
em>source de la correspondance</
em>
peuvent �tre utilis�es :</
p>
<
dd>Un fichier texte contenant des paires cl�-valeur s�par�es
<
dd>S�lection al�atoire d'une entr�e depuis un fichier texte (<
a href="/rewrite/rewritemap.html#rnd">D�tails ...</
a>).</
dd>
<
dd>Recherche une entr�e dans un fichier dbm contenant des
paires nom-valeur. Le condens� hash est �labor� � partir d'un
<
dd>Une des quatre fonctions internes disponibles que fournit
<
code>RewriteMap</
code>: toupper, tolower, escape ou unescape
<
dd>Appelle un programme externe ou un script pour effectuer la
<
dd>Une commande SQL SELECT � ex�cuter pour rechercher la cible
<
p>Vous trouverez plus de d�tails et de nombreux exemples dans le <
a href="/rewrite/rewritemap.html">RewriteMap HowTo</
a>.</
p>
<
div class="top"><
a href="#page-header"><
img alt="top" src="/images/up.gif" /></
a></
div>
<
div class="directive-section"><
h2><
a name="RewriteOptions" id="RewriteOptions">RewriteOptions</
a> <
a name="rewriteoptions" id="rewriteoptions">Directive</
a></
h2>
<
table class="directive">
<
tr><
th><
a href="directive-dict.html#Description">Description:</
a></
th><
td>Configure certaines options sp�ciales
pour le moteur de r��criture</
td></
tr>
<
tr><
th><
a href="directive-dict.html#Syntax">Syntaxe:</
a></
th><
td><
code>RewriteOptions <
var>Options</
var></
code></
td></
tr>
<
tr><
th><
a href="directive-dict.html#Context">Contexte:</
a></
th><
td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</
td></
tr>
<
p>La directive <
code class="directive">RewriteOptions</
code> d�finit
certaines options sp�ciales pour la configuration au niveau du
serveur ou du r�pertoire. La cha�ne de caract�res <
em>Option</
em>
ne peut actuellement prendre qu'une des valeurs suivantes :</
p>
<
dt><
code>Inherit</
code></
dt>
<
p>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 <
code>.htaccess</
code> ou les sections <
code class="directive"><
a href="/mod/core.html#directory"><Directory></
a></
code> 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.</
p>
Les r�gles h�rit�es du niveau parent sont appliqu�es
<
strong>after</
strong> apr�s les r�gles sp�cifi�es dans le niveau
<
dt><
code>InheritBefore</
code></
dt>
<
p>M�me effet que l'option <
code>Inherit</
code> ci-dessus, mais
les r�gles sp�cifi�es dans le niveau parent s'appliquent
<
strong>avant</
strong> les r�gles sp�cifi�es dans le niveau
enfant. Disponible depuis la version 2.3.10 du serveur HTTP
<
dt><
code>AllowNoSlash</
code></
dt>
<
p>Par d�faut, <
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> ignore les URLs qui
correspondent � un r�pertoire sur disque, mais ne comportent pas
de slash final, afin que le module <
code class="module"><
a href="/mod/mod_dir.html">mod_dir</
a></
code>
redirige le client vers l'URL canonique avec un slash final.</
p>
<
p>Lorsque la directive <
code class="directive"><
a href="/mod/mod_dir.html#directoryslash">DirectorySlash</
a></
code> est d�finie � off, il
est possible de sp�cifier l'option <
code>AllowNoSlash</
code> 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.</
p>
<
dt><
code>AllowAnyURI</
code></
dt>
<
p>A partir de la version 2.2.22 de httpd, lorsqu'une directive <
code class="directive"><
a href="#rewriterule">RewriteRule</
a></
code> se situe dans un
contexte de <
code>serveur virtuel</
code> ou de serveur principal,
<
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> ne traitera les r�gles de r��criture
que si l'URI de la requ�te respecte la syntaxe d'un <
a href="/directive-dict.html#Syntax">chemin URL</
a>. Ceci permet
d'�viter certains probl�mes de s�curit� o� des r�gles
particuli�res pourraient permettre des d�veloppements de mod�les
Pour s'affranchir de la restriction relative � la syntaxe des chemins URL, on peut
utiliser l'option <
code>AllowAnyURI</
code>, afin de permettre �
<
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> 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.</
p>
<
h3>Avertissement � propos de la s�curit�</
h3>
<
p>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
<
strong>fortement recommand�</
strong> de ne pas utiliser cette
option. En particulier, pr�tez attention aux cha�nes en entr�e contenant le
caract�re '<
code>@</
code>', qui peuvent modifier l'interpr�tation
de l'URI r��crite, comme indiqu� dans les liens ci-dessus.</
p>
<
dt><
code>MergeBase</
code></
dt>
<
p>Avec cette option, la valeur de la directive <
code class="directive"><
a href="#rewritebase">RewriteBase</
a></
code> est recopi�e depuis
une valeur explicitement d�finie dans tout sous-r�pertoire qui ne
d�finit pas sa propre directive <
code class="directive"><
a href="#rewritebase">RewriteBase</
a></
code>. Disponible � partir
de la version 2.5 du serveur HTTP Apache.</
p>
<
div class="top"><
a href="#page-header"><
img alt="top" src="/images/up.gif" /></
a></
div>
<
div class="directive-section"><
h2><
a name="RewriteRule" id="RewriteRule">RewriteRule</
a> <
a name="rewriterule" id="rewriterule">Directive</
a></
h2>
<
table class="directive">
<
tr><
th><
a href="directive-dict.html#Description">Description:</
a></
th><
td>D�finit les r�gles pour le moteur de r��criture</
td></
tr>
<
em>Mod�le</
em> <
em>Substitution</
em> [<
em>drapeaux</
em>]</
code></
td></
tr>
<
tr><
th><
a href="directive-dict.html#Context">Contexte:</
a></
th><
td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</
td></
tr>
<
p>La directive <
code class="directive">RewriteRule</
code> 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
<
p><
a id="patterns" name="patterns"><
em>Mod�le</
em></
a> est une
<
a id="regexp" name="regexp">expression rationnelle</
a>
compatible perl. Dans la premi�re r�gle de r��criture,
l'expression est compar�e au (%-decoded)
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
<
div class="note"><
h3><
a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est compar� ?</
a></
h3>
<
p>Dans un contexte de serveur virtuel <
code class="directive"><
a href="/mod/core.html#virtualhost">VirtualHost</
a></
code>, le <
em>mod�le</
em> 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
<
p>Dans les contextes de r�pertoire <
code class="directive"><
a href="/mod/core.html#directory">Directory</
a></
code> et htaccess, le
<
em>mod�le</
em> est tout d'abord compar� au chemin du <
em>syst�me
de fichiers</
em>, apr�s suppression du pr�fixe ou chemin de base
ayant conduit le serveur vers la r�gle <
code class="directive">RewriteRule</
code> (par
"
index.html" selon l'endroit o� les directives sont d�finies).</
p>
<
p>Si vous souhaitez faire une comparaison sur le nom
d'h�te, le port, ou la cha�ne de requ�te, utilisez une
directive <
code class="directive"><
a href="#rewritecond">RewriteCond</
a></
code>
comportant respectivement les variables
<
code>%{HTTP_HOST}</
code>, <
code>%{SERVER_PORT}</
code>, ou
<
code>%{QUERY_STRING}</
code>.</
p>
<
div class="note"><
h3>R��critures dans un contexte de r�pertoire</
h3>
<
li>L'utilisation du moteur de r��criture dans les
<
code class="directive"><
a href="/mod/core.html#directory"><Directory></
a></
code> est un peu plus
<
li>Pour activer le moteur de r��criture dans ces contextes, vous devez
d�finir "<
code>RewriteEngine On</
code>" <
strong>et</
strong>
"<
code>Options FollowSymLinks</
code>". Si l'administrateur a d�sactiv�
la possibilit� de modifier l'option <
code>FollowSymLinks</
code> 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
<
li>Lorsqu'on utilise le moteur de r��criture dans un fichier
<
code>.htaccess</
code>, le chemin de base du r�pertoire courant (qui est
toujours le m�me pour ce m�me r�pertoire) est automatiquement
<
em>supprim�</
em> au cours de la comparaison avec le mod�le de la r�gle
de r��criture, et automatiquement <
em>ajout�</
em> 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
<
code class="directive"><
a href="#rewritebase">RewriteBase</
a></
code> pour plus de
d�tails � propos de l'ajout du pr�fixe apr�s les substitutions
<
li>Si vous souhaitez effectuer une comparaison en prenant en compte
chemin de l'URL dans un contexte de r�pertoire (htaccess), vous devez
utiliser la variable <
code>%{REQUEST_URI}</
code> dans la directive
<
code class="directive">RewriteCond</
code>.</
li>
<
li>Le prefixe supprim� se termine toujours par un slash, ce qui
signifie que la comparaison s'effectue avec une cha�ne qui ne comporte
<
em>jamais</
em> de slash de d�but. Ainsi, un <
em>mod�le</
em> contenant
<
code>^/</
code> ne correspondra jamais dans un contexte de r�pertoire.</
li>
<
li>Bien que les r�gles de r��criture soient permises du point de vue de
la syntaxe dans les sections <
code class="directive"><
a href="/mod/core.html#location"><Location></
a></
code> et <
code class="directive"><
a href="/mod/core.html#files"><Files></
a></
code>, elles n'y sont pas prises en compte, et
n'y sont � priori d'aucune utilit�.</
li>
<
p>Pour quelques conseils � propos des <
a class="glossarylink" href="/glossary.html#regex" title="voir glossaire">expressions rationnelles</
a>, voir le
<
p>Dans mod_rewrite, on peut aussi utiliser le caract�re NON
('<
code>!</
code>') comme pr�fixe de mod�le. Ceci vous permet
d'inverser la signification d'un mod�le, soit pour dire
``<
em>si l'URL consid�r�e ne correspond <
strong>PAS</
strong> �
ce mod�le</
em>''. 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
<
div class="note"><
h3>Note</
h3>
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 <
code>$N</
code> dans la cha�ne de
<
p>Dans une r�gle de r��criture,
<
a id="rhs" name="rhs"><
em>Substitution</
em></
a> est la cha�ne
de caract�res qui remplace le chemin de l'URL original qui
correspondait au <
em>Mod�le</
em>. <
em>Substitution</
em> peut
<
dt>un chemin du syst�me de fichiers</
dt>
<
dd>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
<
dd>Un chemin relatif � la valeur de <
code class="directive"><
a href="/mod/core.html#documentroot">DocumentRoot</
a></
code> vers la ressource qui
doit �tre servie. Notez que <
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code>
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
derni�re sera trait�e comme un chemin d'URL <
em>� moins</
em>
qu'un r�pertoire nomm� <
code>www</
code> n'existe � la racine
de votre syst�me de fichiers (ou dans le cas d'une
r��criture au sein d'un fichier <
code>.htaccess</
code>,
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 <
code class="directive"><
a href="/mod/mod_alias.html#alias">Alias</
a></
code>) soient appliqu�es au
chemin d'URL r�sultant, utilisez le drapeau <
code>[PT]</
code>
comme d�crit ci-dessous.</
dd>
<
dd>Si une URL absolue est sp�cifi�e,
<
code class="module"><
a href="/mod/mod_rewrite.html">mod_rewrite</
a></
code> 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 <
code>[R]</
code> ci-dessous.</
dd>
<
dt><
code>-</
code> (tiret)</
dt>
<
dd>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).</
dd>
<
p>En plus du texte, la cha�ne <
em>Substition</
em> peut
<
li>des r�f�rences arri�res (<
code>$N</
code>) vers le mod�le
d'une directive RewriteRule</
li>
<
li>des r�f�rences arri�res (<
code>%N</
code>) vers le dernier
mod�le d'une directive RewriteCond qui correspondait</
li>
<
li>des variables du serveur comme dans les cha�nes de test de
condition d'une r�gle (<
code>%{VARNAME}</
code>)</
li>
<
a href="#mapfunc">fonctions de comparaison</
a>
(<
code>${nom correspondance:cl�|d�faut}</
code>)</
li>
<
p>Les r�f�rences arri�res sont des identificateurs de la forme
<
code>$</
code><
strong>N</
strong> (<
strong>N</
strong>=0..9), qui
seront remplac�s par le contenu du <
strong>N</
strong>�me groupe
du <
em>Mod�le</
em> qui correspondait. Les variables du serveur
sont les m�mes que dans la <
em>Cha�ne de test</
em> d'une
directive <
code>RewriteCond</
code>. Les fonctions de comparaison
sont issues de la directive <
code>RewriteMap</
code> dans la
section de laquelle elles sont d�crites. Ces trois types de
variables sont �valu�es dans l'ordre ci-dessus.</
p>
<
p>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 <
a href="#what_is_matched">Qu'est-ce qui est
compar� ?</
a>) est <
strong>int�gralement
remplac�e</
strong> par la cha�ne de <
em>Substitution</
em> 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 <
a href="/rewrite/flags.html#flag_l"><
code><
strong>L</
strong></
code></
a>,
ou par un autre drapeau qui implique un arr�t imm�diat, comme
<
code><
strong>END</
strong></
code> ou
<
code><
strong>F</
strong></
code>.</
p>
<
div class="note"><
h3>Modifier la cha�ne de requ�te</
h3>
<
p>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 <
code>[QSA]</
code>.</
p>
<
p>En outre, vous pouvez sp�cifier des <
a name="rewriteflags" id="rewriteflags">actions</
a> sp�ciales � effectuer en ajoutant
<
strong><
code>[</
code><
em>drapeaux</
em><
code>]</
code></
strong>
comme troisi�me argument de la directive
<
code>RewriteRule</
code>. S�par�s par des virgules au sein d'une
liste encadr�e par des crochets, les <
em>drapeaux</
em> peuvent
�tre choisis dans la table suivante. Vous trouverez plus de
d�tails, et des exemples pour chaque drapeau dans le <
a href="/rewrite/flags.html">document � propos des drapeaux de
<
tr><
th>Drapeaux et syntaxe</
th>
<
td>Echappe les caract�res non-alphanum�riques <
em>avant</
em>
d'appliquer la transformation. <
em><
a href="/rewrite/flags.html#flag_b">d�tails ...</
a></
em></
td>
<
td>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
<
td>cookie|CO=<
em>NAME</
em>:<
em>VAL</
em></
td>
<
td>D�finit un cookie au niveau du navigateur client. La syntaxe
CO=<
em>NAME</
em>:<
em>VAL</
em>:<
em>domain</
em>[:<
em>lifetime</
em>[:<
em>path</
em>[:<
em>secure</
em>[:<
em>httponly</
em>]]]] <
em><
a href="/rewrite/flags.html#flag_co">details ...</
a></
em>
<
td>Supprime la partie PATH_INFO de l'URI r��crit. <
em><
a href="/rewrite/flags.html#flag_dpi">d�tails
<
td>env|E=[!]<
em>VAR</
em>[:<
em>VAL</
em>]</
td>
<
td>D�finit la variable d'environnement <
em>VAR</
em> (� la valeur
<
em>VAL</
em> si elle est fournie). La variante !<
em>VAR</
em>
annule la d�finition de la variable <
em>VAR</
em>.<
em><
a href="/rewrite/flags.html#flag_e">d�tails ...</
a></
em></
td>
<
td>Renvoie une r�ponse 403 FORBIDDEN au navigateur client.
<
td>Renvoie un message d'erreur 410 GONE au navigateur client. <
em><
a href="/rewrite/flags.html#flag_g">d�tails ...</
a></
em></
td>
<
td>Handler|H=<
em>Gestionnaire de contenu</
em></
td>
<
td>L'URI r�sultant est envoy� au <
em>Gestionnaire de
contenu</
em> pour traitement. <
em><
a href="/rewrite/flags.html#flag_h">d�tails ...</
a></
em></
td>
<
td>Arr�te le processus de r��criture imm�diatement et n'applique
plus aucune r�gle. Pr�tez une attention particuli�re aux mises
en garde concernant les contextes de niveau r�pertoire et
.htaccess (voir aussi le drapeau END). <
em><
a href="/rewrite/flags.html#flag_l">d�tails ...</
a></
em></
td>
<
td>R�ex�cute le processus de r��criture � partir de la premi�re
r�gle, en utilisant le r�sultat du jeu de r�gles, sous r�serve
<
td>Rend la comparaison entre mod�les insensible � la casse.
<
td>Emp�che mod_rewrite d'effectuer un �chappement hexad�cimal
des caract�res sp�ciaux dans le r�sultat de la r��criture. <
em><
a href="/rewrite/flags.html#flag_ne">d�tails ...</
a></
em></
td>
<
td>La r�gle est saut�e si la requ�te courante est une
sous-requ�te interne. <
em><
a href="/rewrite/flags.html#flag_ns">d�tails ...</
a></
em></
td>
<
td>Force l'envoi en interne de l'URL de substitution en tant
<
td>L'URI r�sultant est repass� au moteur de mise en
correspondance des URLs pour y �tre trait� par d'autres
traducteurs URI-vers-nom de fichier, comme <
code>Alias</
code> ou
<
code>Redirect</
code>. <
em><
a href="/rewrite/flags.html#flag_pt">d�tails ...</
a></
em></
td>
<
td>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. <
em><
a href="/rewrite/flags.html#flag_qsa">d�tails ...</
a></
em></
td>
<
td>Supprime toute cha�ne de param�tres de l'URI entrant. <
em><
a href="/rewrite/flags.html#flag_qsd">d�tails
<
td>redirect|R[=<
em>code</
em>]</
td>
<
td>Force une redirection externe, avec un code de statut HTTP
<
td>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
<
td>skip|S=<
em>nombre</
em></
td>
<
td>Si la r�gle courante s'applique, le moteur de r��criture
doit sauter les <
em>nombre</
em> r�gles suivantes. <
em><
a href="/rewrite/flags.html#flag_s">d�tails ...</
a></
em></
td>
<
td>type|T=<
em>MIME-type</
em></
td>
<
td>Force l'attribution du <
a class="glossarylink" href="/glossary.html#type-mime" title="voir glossaire">Type-MIME</
a>
sp�cifi� au fichier cible. <
em><
a href="/rewrite/flags.html#flag_t">d�tails ...</
a></
em></
td>
<
div class="note"><
h3>D�veloppement du r�pertoire home</
h3>
<
p> 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 <
code class="module"><
a href="/mod/mod_userdir.html">mod_userdir</
a></
code>.</
p>
<
p> Ce d�veloppement n'est pas effectu� si le drapeau <
em>PT</
em> est
utilis� dans la directive <
code class="directive"><
a href="#rewriterule">RewriteRule</
a></
code></
p>
<
p>Voici toutes les combinaisons de substitution et leurs
<
p><
strong>Dans la configuration au niveau du serveur principal
pour la requ�te ``<
code>GET
<
th>R�sultat de la substitution</
th>
<
td>^/un_chemin(.*) autre_chemin$1</
td>
<
td>invalide, non support�</
td>
<
td>^/un_chemin(.*) autre_chemin$1 [R]</
td>
<
td>invalide, non support�</
td>
<
td>^/un_chemin(.*) autre_chemin$1 [P]</
td>
<
td>invalide, non support�</
td>
<
td>^/un_chemin(.*) /autre_chemin$1</
td>
<
td>^/un_chemin(.*) /autre_chemin$1 [R]</
td>
<
td>^/un_chemin(.*) /autre_chemin$1 [P]</
td>
<
td>sans objet, non support�</
td>
<
td>sans objet, non support�</
td>
<
p><
strong>Dans une configuration de niveau r�pertoire pour
<
code>/chemin</
code><
br />
<
code>RewriteBase /chemin</
code>)<
br />
pour la requ�te ``<
code>GET
<
th>R�sultat de la substitution</
th>
<
td>^chemin-local(.*) autre-chemin$1</
td>
<
td>^chemin-local(.*) autre-chemin$1 [R]</
td>
<
td>^chemin-local(.*) autre-chemin$1 [P]</
td>
<
td>n'a pas lieu d'�tre, non support�</
td>
<
td>^chemin-local(.*) /autre-chemin$1</
td>
<
td>^chemin-local(.*) /autre-chemin$1 [R]</
td>
<
td>^chemin-local(.*) /autre-chemin$1 [P]</
td>
<
td>n'a pas lieu d'�tre, non support�</
td>
<
td>n'a pas lieu d'�tre, non support�</
td>
(le drapeau [R] est redondant)</
td>
<
p><
span>Langues Disponibles: </
span><
a href="/en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English"> en </
a> |
</
div><
div class="top"><
a href="#page-header"><
img src="/images/up.gif" alt="top" /></
a></
div><
div class="section"><
h2><
a id="comments_section" name="comments_section">Commentaires</
a></
h2><
div class="warning"><
strong>Notice:</
strong><
br />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 again 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 Freenode, or sent to our <
a href="http://httpd.apache.org/lists.html">mailing lists</
a>.</
div>
var comments_shortname = 'httpd'; d.write('<div id="comments_thread"><\/div>'); d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); //--><!]]></
script></
div><
div id="footer">
if (typeof(prettyPrint) !== 'undefined') {