1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>mod_rewrite - Serveur Apache HTTP</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body>
17<div id="page-header">
18<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p>
19<p class="apache">Serveur Apache HTTP Version 2.2</p>
20<img alt="" src="/images/feather.gif" /></div>
21<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
22<div id="path">
23<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.2</a> &gt; <a href="./">Modules</a></div>
24<div id="page-content">
25<div id="preamble"><h1>Module Apache mod_rewrite</h1>
26<div class="toplang">
27<p><span>Langues Disponibles: </span><a href="/en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
28<a href="/fr/mod/mod_rewrite.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
29</div>
30<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
31r�gles permettant de r��crire les URLs des requ�tes
32� la vol�e</td></tr>
33<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
34<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur�de�Module:</a></th><td>rewrite_module</td></tr>
35<tr><th><a href="module-dict.html#SourceFile">Fichier�Source:</a></th><td>mod_rewrite.c</td></tr>
36<tr><th><a href="module-dict.html#Compatibility">Compatibilit�:</a></th><td>Disponible � partir de la version 1.3
37d'Apache</td></tr></table>
38<h3>Sommaire</h3>
39
40      <p>Ce module utilise un moteur de r��criture � base de r�gles
41      (bas� sur un interpr�teur d'expressions rationnelles) pour
42      r��crire les URLs des requ�tes � la vol�e. Il accepte un nombre
43      illimit� de r�gles, ainsi q'un nombre illimit� de conditions
44      attach�es � chaque r�gle, fournissant ainsi un m�canisme de
45      manipulation d'URL vraiment souple et puissant. Les manipulations
46      d'URL peuvent d�pendre de nombreux tests, des variables du
47      serveur, des variables d'environnement, des en-t�tes HTTP ou de
48      l'horodatage. On peut m�me lancer des requ�tes vers une base de
49      donn�es externe sous divers formats, afin d'obtenir une
50      s�lection d'URL tr�s fine.</p>
51
52      <p>Ce module agit sur l'ensemble de l'URL (la partie concernant
53      le chemin incluse) au niveau du serveur
54      (<code>httpd.conf</code>) mais aussi au niveau du r�pertoire
55      (<code>.htaccess</code>), et peut g�n�rer des parties de cha�ne
56      de requ�te comme r�sultat. Le r�sultat de la r��criture peut
57      renvoyer vers un sous-traitement interne, une redirection vers
58      une requ�te externe, ou m�me vers le flux d'un proxy interne.</p>
59
60      <p>Vous trouverez d'avantage de d�tails, discussions et exemples
61      dans la
62      <a href="/rewrite/">documentation d�taill�e
63      sur mod_rewrite</a>.</p>
64</div>
65<div id="quickview"><h3 class="directives">Directives</h3>
66<ul id="toc">
67<li><img alt="" src="/images/down.gif" /> <a href="#rewritebase">RewriteBase</a></li>
68<li><img alt="" src="/images/down.gif" /> <a href="#rewritecond">RewriteCond</a></li>
69<li><img alt="" src="/images/down.gif" /> <a href="#rewriteengine">RewriteEngine</a></li>
70<li><img alt="" src="/images/down.gif" /> <a href="#rewritelock">RewriteLock</a></li>
71<li><img alt="" src="/images/down.gif" /> <a href="#rewritelog">RewriteLog</a></li>
72<li><img alt="" src="/images/down.gif" /> <a href="#rewriteloglevel">RewriteLogLevel</a></li>
73<li><img alt="" src="/images/down.gif" /> <a href="#rewritemap">RewriteMap</a></li>
74<li><img alt="" src="/images/down.gif" /> <a href="#rewriteoptions">RewriteOptions</a></li>
75<li><img alt="" src="/images/down.gif" /> <a href="#rewriterule">RewriteRule</a></li>
76</ul>
77<h3>Sujets</h3>
78<ul id="topics">
79<li><img alt="" src="/images/down.gif" /> <a href="#quoting">Marquage des caract�res sp�ciaux</a></li>
80<li><img alt="" src="/images/down.gif" /> <a href="#EnvVar">Variables d'environnement</a></li>
81<li><img alt="" src="/images/down.gif" /> <a href="#vhosts">R��criture et h�tes virtuels</a></li>
82<li><img alt="" src="/images/down.gif" /> <a href="#Solutions">Solutions pratiques</a></li>
83</ul><h3>Voir aussi</h3>
84<ul class="seealso">
85<li><a href="#rewriteflags">Drapeaux des r�gles de r��criture</a></li>
86</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
87<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
88<div class="section">
89<h2><a name="quoting" id="quoting">Marquage des caract�res sp�ciaux</a></h2>
90
91      <p>Depuis Apache 1.3.20, les caract�res sp�ciaux dans les
92      <em>cha�nes de test</em> et les cha�nes de <em>Substitution</em>
93      peuvent �tre �chapp�s (c'est � dire trait�s comme des caract�res
94      normaux sans tenir compte de leur signification en tant que
95      caract�re sp�cial), en les faisant pr�c�der d'un caract�re
96      anti-slash ('\'). En d'autres termes, vous pouvez inclure un
97      v�ritable signe "dollar" dans une cha�ne de <em>Substitution</em>
98      en utilisant '<code>\$</code>' ; ceci emp�che mod_rewrite de le
99      traiter comme une r�f�rence arri�re.</p>
100</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
101<div class="section">
102<h2><a name="EnvVar" id="EnvVar">Variables d'environnement</a></h2>
103
104      <p>Ce module conserve le contenu de deux variables d'environnement
105      CGI/SSI additionnelles (non standards) nomm�es
106      <code>SCRIPT_URL</code> et <code>SCRIPT_URI</code>. Celles-ci
107      contiennent l'adresse <em>logique</em> vue du Web
108      de la ressource concern�e, tandis que les variables CGI/SSI
109      standards <code>SCRIPT_NAME</code> et
110      <code>SCRIPT_FILENAME</code> contiennent l'adresse
111      <em>physique</em> de la ressource vue du syst�me. </p>
112
113      <p>Note : ces variables conservent l'URI/URL <em>telle qu'elle
114      �tait � l'arriv�e de la requ�te</em>, c'est � dire
115      <em>avant</em> tout processus de r��criture. Il est important de
116      le savoir car le processus de r��criture est principalement
117      utilis� pour r��crire des URLs logiques en chemins physiques.</p>
118
119<div class="example"><h3>Exemple</h3><pre>
120SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.html
121SCRIPT_FILENAME=/u/rse/.www/index.html
122SCRIPT_URL=/u/rse/
123SCRIPT_URI=http://en1.engelschall.com/u/rse/
124</pre></div>
125
126</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
127<div class="section">
128<h2><a name="vhosts" id="vhosts">R��criture et h�tes virtuels</a></h2>
129
130     <p>Par d�faut, les h�tes virtuels n'h�ritent pas de la
131     configuration de <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> telle qu'elle est
132     d�finie dans le contexte du serveur principal. Pour que la
133     configuration du serveur principal s'applique aux h�tes virtuels,
134     vous devez ins�rez les directives suivantes dans chaque section
135     <code class="directive"><a href="/mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> :</p>
136
137     <div class="example"><p><code>
138     RewriteEngine On<br />
139     RewriteOptions Inherit
140     </code></p></div>
141</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
142<div class="section">
143<h2><a name="Solutions" id="Solutions">Solutions pratiques</a></h2>
144
145    <p>Vous trouverez de nombreux exemples d'utilisation courante (et
146    moins courante) de mod_rewrite dans la <a href="/rewrite/">documentation sp�cifique � la r��criture.</a></p>    
147
148</div>
149<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
150<div class="directive-section"><h2><a name="RewriteBase" id="RewriteBase">RewriteBase</a> <a name="rewritebase" id="rewritebase">Directive</a></h2>
151<table class="directive">
152<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D�finit l'URL de base pour les r��critures au niveau
153r�pertoire</td></tr>
154<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteBase <em>chemin URL</em></code></td></tr>
155<tr><th><a href="directive-dict.html#Default">D�faut:</a></th><td><code>None</code></td></tr>
156<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>r�pertoire, .htaccess</td></tr>
157<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
158<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
159<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
160</table>
161      <p>La directive <code class="directive">RewriteBase</code> permet de
162      sp�cifier le pr�fixe d'URL � utiliser dans un contexte de
163      r�pertoire (htaccess) pour les directives
164      <code class="directive">RewriteRule</code> qui r��crivent vers un chemin
165      relatif.</p>
166      <p>Cette directive est <em>obligatoire</em> si vous utilisez un
167      chemin relatif dans une substitution, et dans un contexte de
168      r�pertoire (htaccess), sauf si au moins une de ces conditions est
169      v�rifi�e :</p>
170      <ul>
171          <li>La requ�te initiale, ainsi que la substitution, sont dans
172	  la <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> (c'est �
173	  dire que pour y acc�der, il n'est pas n�cessaire d'utiliser
174	  une directive telle qu'<code class="directive"><a href="/mod/mod_alias.html#alias">Alias</a></code>).</li>
175          <li>Le chemin du syst�me de fichiers vers le r�pertoire
176	  contenant la <code class="directive">RewriteRule</code>, suffix� par
177	  la substitution relative est aussi valide en tant qu'URL sur
178	  le serveur (ce qui est rare).</li>
179      </ul>
180
181<p>Dans l'exemple ci-dessous, la directive
182<code class="directive">RewriteBase</code> est n�cessaire afin d'�viter une
183r��criture en http://example.com/opt/myapp-1.2.3/welcome.html car la
184ressource n'�tait pas relative � la racine des documents. Cette erreur
185de configuration aurait conduit le serveur � rechercher un r�pertoire
186"opt" � la racine des documents.</p>
187
188<div class="example"><pre>
189DocumentRoot /var/www/example.com
190Alias /myapp /opt/myapp-1.2.3
191&lt;Directory /opt/myapp-1.2.3&gt;
192RewriteEngine On
193RewriteBase /myapp/
194RewriteRule ^index\.html$  welcome.html 
195&lt;/Directory&gt;
196</pre></div>
197
198</div>
199<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
200<div class="directive-section"><h2><a name="RewriteCond" id="RewriteCond">RewriteCond</a> <a name="rewritecond" id="rewritecond">Directive</a></h2>
201<table class="directive">
202<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D�finit une condition qui devra �tre satisfaite pour que
203la r��criture soit effectu�e
204</td></tr>
205<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code> RewriteCond
206      <em>cha�ne de test</em> <em>expression de comparaison</em></code></td></tr>
207<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</td></tr>
208<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
209<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
210<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
211</table>
212      <p>La directive <code class="directive">RewriteCond</code> d�finit une
213      condition d'application d'une certaine r�gle. Une ou plusieurs
214      directives <code class="directive">RewriteCond</code> peuvent pr�c�der
215      une directive
216      <code class="directive"><a href="#rewriterule">RewriteRule</a></code>. La r�gle
217      qui suit n'est appliqu�e que si l'�tat actuel de l'URI
218      correspond � son mod�le, <strong>et</strong> si les conditions sont satisfaites.</p>
219
220      <p><em>cha�ne de test</em> est une cha�ne de caract�res qui peut
221      contenir, en plus du plein texte, les constructions �tendues
222      suivantes :</p>
223
224      <ul>
225        <li>
226          <strong>r�f�rences arri�res de r�gle de r��criture</strong> :
227	  ce sont des r�f�rences arri�res de la forme
228	  <strong><code>$N</code></strong> (0 &lt;= N &lt;= 9), qui
229	  donnent acc�s aux parties group�es (entre parenth�ses) du
230	  mod�le tir� de la <code>RewriteRule</code> assujettie au
231	  jeu de conditions concern�.
232        </li>
233        <li>
234          <strong>R�f�rences arri�res de condition de r��criture
235	  </strong> : ce sont des r�f�rences arri�res de la forme
236	  <strong><code>%N</code></strong> (1 &lt;= N &lt;= 9), qui
237	  donnent acc�s aux parties group�es (l� aussi entre
238	  parenth�ses) du mod�le de la derni�re condition satisfaite
239	  du jeu de conditions concern�.
240        </li>
241        <li>
242          <strong>extensions de table de r��criture</strong> :
243	  ce sont des extensions de la forme <strong><code>${nomTable:cl�|d�faut}</code></strong>. Voir
244	  <a href="#mapfunc">la documentation de
245          RewriteMap</a> pour plus de d�tails.
246        </li>
247        <li>
248          <strong>Variables du serveur</strong> :
249	  ce sont des variables de la forme
250	  <strong><code>%{</code> <em>NOM_DE_VARIABLE</em>
251            <code>}</code></strong>
252            <strong><code>%{</code> <em>NOM_DE_VARIABLE</em>
253            <code>}</code></strong> o� <em>NOM_DE_VARIABLE</em>
254	    peut �tre une cha�ne de caract�res faisant partie de la
255	    liste suivante :
256
257          <table>
258          
259            <tr>
260              <th>En-t�tes HTTP :</th> <th>connexion &amp; requ�te:</th> <th />
261	    </tr>
262
263            <tr>
264	      <td>
265		 HTTP_USER_AGENT<br />
266                 HTTP_REFERER<br />
267                 HTTP_COOKIE<br />
268                 HTTP_FORWARDED<br />
269                 HTTP_HOST<br />
270                 HTTP_PROXY_CONNECTION<br />
271                 HTTP_ACCEPT<br />
272              </td>
273
274              <td>
275                 REMOTE_ADDR<br />
276                 REMOTE_HOST<br />
277                 REMOTE_PORT<br />
278                 REMOTE_USER<br />
279                 REMOTE_IDENT<br />
280                 REQUEST_METHOD<br />
281                 SCRIPT_FILENAME<br />
282                 PATH_INFO<br />
283                 QUERY_STRING<br />
284                 AUTH_TYPE<br />
285              </td>
286
287	      <td />
288            </tr>
289
290            <tr>
291              <th>variables internes au serveur :</th> <th>date et heure :</th> <th>sp�ciaux :</th>
292	    </tr>
293
294            <tr>
295	      <td>
296	         DOCUMENT_ROOT<br />
297                 SERVER_ADMIN<br />
298                 SERVER_NAME<br />
299                 SERVER_ADDR<br />
300                 SERVER_PORT<br />
301                 SERVER_PROTOCOL<br />
302                 SERVER_SOFTWARE<br />
303              </td>
304
305              <td>
306                 TIME_YEAR<br />
307                 TIME_MON<br />
308                 TIME_DAY<br />
309                 TIME_HOUR<br />
310                 TIME_MIN<br />
311                 TIME_SEC<br />
312                 TIME_WDAY<br />
313                 TIME<br />
314              </td>
315
316              <td>
317                 API_VERSION<br />
318                 THE_REQUEST<br />
319                 REQUEST_URI<br />
320                 REQUEST_FILENAME<br />
321                 IS_SUBREQ<br />
322                 HTTPS<br />
323              </td>
324            </tr>
325          </table>
326
327                <p>Toutes ces variables correspondent nom pour nom aux
328		en-t�tes MIME HTTP, aux variables C du serveur Apache
329		ou aux champs <code>struct tm</code> du syst�me Unix.
330		La plupart sont document�es dans une autre partie du
331		manuel ou dans la sp�cification CGI.</p>
332
333		<p>SERVER_NAME et SERVER_PORT d�pendent respectivement
334		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>
335		
336		<p>Parmi les variables
337		sp�cifiques � mod_rewrite, ou trouve les suivantes :</p>
338	<div class="note">
339                <dl>
340                  <dt><code>IS_SUBREQ</code></dt>
341
342                  <dd>Contiendra le texte "true" si la requ�te en cours
343		  de traitement est une sous-requ�te, "false" dans le
344		  cas contraire. Une sous-requ�te est g�n�r�e quand un
345		  module a besoin de se r�f�rer � des fichiers ou URIs
346		  addidionnels pour pouvoir mener � bien sa t�che.</dd>
347
348                  <dt><code>API_VERSION</code></dt>
349
350                  <dd>Il s'agit de la version de l'API des modules
351		  Apache (l'interface interne entre le serveur et les
352		  modules) dans la construction actuelle de httpd,
353		  telle qu'elle est d�finie dans include/ap_mmn.h. La
354		  version de l'API des modules correspond � la version
355		  d'Apache utilis�e (pour Apache 1.3.14, par exemple,
356		  la version de l'API sera 19990320:10), mais cette
357		  information int�resse principalement les
358		  d�veloppeurs de modules.</dd>
359
360                  <dt><code>THE_REQUEST</code></dt>
361
362                  <dd>La ligne de requ�te HTTP compl�te envoy�e par le
363		  navigateur au serveur (par exemple, "<code>GET
364                  /index.html HTTP/1.1</code>"), � l'exclusion de tout
365		  en-t�te ajout� par le navigateur. Cette
366		  valeur n'a pas �t� d�s�chapp�e (d�cod�e), � la
367		  diff�rence de la plupart des variables suivantes.</dd>
368
369                  <dt><code>REQUEST_URI</code></dt>
370
371                  <dd>La partie chemin de l'URI de la requ�te, comme
372		  "/index.html". En particulier, ceci exclut la cha�ne
373		  de param�tres qui est quant � elle disponible via sa
374		  propre variable <code>QUERY_STRING</code>.</dd>
375
376                  <dt><code>REQUEST_FILENAME</code></dt>
377
378                  <dd>Le chemin complet local au syst�me de fichiers
379		  du fichier ou du script correspondant
380		  � la requ�te, s'il a d�j� �t� d�termin� par le serveur
381		  au moment o� on y fait r�f�rence. Dans le cas
382		  contraire, et en particulier dans le cas d'un serveur
383		  virtuel, <code>REQUEST_FILENAME</code> contient la
384		  valeur de <code>REQUEST_URI</code>.</dd>
385
386                  <dt><code>HTTPS</code></dt>
387
388                  <dd>Contiendra le texte "on" si la connexion
389		  utilise SSL/TLS, "off" dans le cas contraire
390		  (L'utilisation de cette variable est pertinente,
391		  ind�pendamment du fait que <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code>
392		  soit charg� ou non).</dd>
393
394                </dl>
395</div>
396        </li>
397      </ul>
398
399      <p>Autres points � conna�tre :</p>
400
401      <ol>
402        <li><p>Les variables SCRIPT_FILENAME et REQUEST_FILENAME ont la
403	m�me valeur - celle du champ <code>filename</code> de la
404	structure interne du serveur Apache <code>request_rec</code>.
405	Le premier nom est bien connu en tant que variable CGI,
406	alors que le second est �quivalent � REQUEST_URI (qui contient
407	la valeur du champ <code>uri</code> de la structure
408	<code>request_rec</code>).</p>
409	<p>Si une substitution survient, et si la r��criture se
410	poursuit, la valeur des deux variables est mise � jour en
411	cons�quence.</p>
412        <p>Dans un contexte de serveur principal (c'est � dire avant que
413	la requ�te n'ait �t� mise en relation avec le syst�me de
414	fichiers), SCRIPT_FILENAME et REQUEST_FILENAME ne peuvent pas
415	contenir le chemin local entier dans le syst�me de fichiers, car
416	celui-ci n'a pas encore �t� d�termin� � ce stade du traitement.
417	Les deux variables contiennent alors la valeur de REQUEST_URI.
418	Pour obtenir le chemin local entier associ� � la requ�te dans le
419	syst�me de fichiers
420	dans un contexte de serveur principal, utilisez une recherche
421	avant <code>%{LA-U:REQUEST_FILENAME}</code> pour d�terminer la
422	valeur finale de REQUEST_FILENAME.</p></li>
423
424
425        <li>On peut aussi utiliser <code>%{ENV:variable}</code>, o�
426	<em>variable</em> peut �tre remplac� par toute variable
427	d'environnement. Ces variables sont recherch�es dans les
428	structures internes d'Apache, et (si elles n'y figurent pas)
429	via <code>getenv()</code> depuis le processus du serveur
430	Apache.</li>
431
432        <li>Que <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> soit charg� ou non, on peut
433	utiliser <code>%{SSL:variable}</code>, o� <em>variable</em>
434	peut �tre remplac� par le nom d'une
435	<a href="mod_ssl.html#envvars">variable
436	d'environnement SSL</a>, mais la valeur produite sera toujours
437	une cha�ne de caract�res vide si <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> n'est
438	pas charg�. Exemple :
439	<code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> peut correspondre
440	� <code>128</code>.</li>
441
442        <li>Pour obtenir la valeur d'un en-t�te contenu dans une requ�te
443	HTTP, on peut toujours utiliser <code>%{HTTP:header}</code>,
444	o� <em>header</em> peut �tre remplac� par tout nom d'en-t�te
445	MIME HTTP. Exemple : <code>%{HTTP:Proxy-Connection}</code> est
446	la valeur de l'en-t�te HTTP ``<code>Proxy-Connection:</code>''.
447        <p>Si une condition contient un en-t�te HTTP, il est ajout� �
448	l'en-t�te Vary de la r�ponse dans le cas o� la condition est
449	�valu�e � true pour la requ�te. Dans le cas contraire, il n'est
450	<strong>pas</strong> ajout�. L'ajout de l'en-t�te HTTP �
451	l'en-t�te Vary de la r�ponse s'av�re n�cessaire pour une mise
452	en cache correcte.</p>
453        <p>Il faut garder � l'esprit que les conditions suivent une
454	logique de court-circuit en cas de pr�sence du drapeau
455	'<strong><code>ornext|OR</code></strong>', si bien que
456	certaines d'entre elles sont susceptibles de ne pas �tre
457	�valu�es du tout.</p></li>
458
459        <li>On peut utiliser <code>%{LA-U:variable}</code> pour les
460	recherches en avant qui effectuent une sous-requ�te interne
461	(bas�e sur l'URL), pour d�terminer la valeur finale de
462	<em>variable</em>. Cela peut servir � acc�der � une variable
463	(n�cessaire pour une r��criture) qui n'est pas disponible dans
464	la situation pr�sente, mais le sera dans une phase ult�rieure.
465	<p>Par exemple, pour effectuer une r��criture qui tient compte
466	de la variable <code>REMOTE_USER</code> dans un contexte
467	niveau serveur (fichier <code>httpd.conf</code>), vous devez
468	utiliser <code>%{LA-U:REMOTE_USER}</code> ; cette variable est
469	d�finie au cours des phases d'autorisation, qui interviennent
470	<em>apr�s</em> la phase de traduction de l'URL (pendant
471	laquelle agit mod_rewrite).</p>
472	<p>Par contre, comme mod_rewrite impl�mente son contexte
473	niveau r�pertoire (fichier <code>.htaccess</code>) via la
474	phase Fixup de l'API, et comme les phases d'autorisation
475	interviennent <em>avant</em> cette phase, vous ne pouvez
476	utiliser <code>%{REMOTE_USER}</code> que
477	dans le contexte niveau serveur.</p></li>
478
479        <li>On peut utiliser <code>%{LA-F:variable}</code> pour
480	effectuer une sous-requ�te interne (bas�e sur un nom de
481	fichier), pour d�terminer la valeur finale de
482	<em>variable</em>. La plupart du temps, elle est identique �
483	LA-U vue pr�c�demment.</li>
484      </ol>
485
486      <p><em>expression de comparaison</em> est une expression
487      rationnelle qui est appliqu�e � l'instance actuelle de
488      <em>cha�ne de test</em>. <em>cha�ne de test</em> est d'abord
489      �valu�e, puis compar�e �
490      l'<em>expression de comparaison</em>.</p>
491
492      <p><strong>A savoir :</strong>
493      <em>expression de comparaison</em> est une
494      <em>expression rationnelle compatible perl</em> avec
495      quelques extensions :</p>
496
497      <ol>
498        <li>Vous pouvez pr�fixer l'expression avec un caract�re
499	'<code>!</code>' (point d'exclamation) pour indiquer une
500	expression de <strong>non</strong>-correspondance.</li>
501
502        <li>Il existe certaines variantes sp�ciales
503	d'<em>expressions de comparaison</em>. A la place d'une
504	expression rationnelle, vous pouvez utiliser :
505
506          <ul>
507            <li>'<strong>&lt;expression</strong>' (inf�rieur au sens
508	    lexicographique)<br />
509	    Traite l'<em>expression</em> comme une cha�ne de
510	    caract�res et la compare lexicographiquement �
511	    <em>cha�ne de test</em>. La condition est satisfaite si
512	    <em>cha�ne de test</em> est inf�rieure au sens
513	    lexicographique � l'<em>expression</em>.</li>
514
515            <li>'<strong>&gt;expression</strong>' (sup�rieur au sens
516	    lexicographique)<br />
517	    Traite l'<em>expression</em> comme une cha�ne de
518	    caract�res et la compare lexicographiquement �
519	    <em>cha�ne de test</em>. La condition est satisfaite si
520	    <em>cha�ne de test</em> est sup�rieure au sens
521	    lexicographique � l'<em>expression</em>.</li>
522
523            <li>'<strong>&gt;expression</strong>' (�gal au sens
524	    lexicographique)<br />
525	    Traite l'<em>expression</em> comme une cha�ne de
526	    caract�res et la compare lexicographiquement �
527	    <em>cha�ne de test</em>. La condition est satisfaite si
528	    <em>cha�ne de test</em> est �gale au sens
529	    lexicographique � l'<em>expression</em> (les deux cha�nes
530	    sont exactement identiques, caract�re pour caract�re). Si
531	    <em>expression</em> est <code>""</code> (deux guillemets),
532	    <em>cha�ne de test</em> est compar�e � la cha�ne vide.</li>
533
534            <li>'<strong>-d</strong>' (est un
535	    <strong>r</strong>�pertoire)<br />
536	    Traite <em>cha�ne de test</em> comme un chemin et v�rifie
537	    s'il existe ou pas, et s'il s'agit d'un r�pertoire.</li>
538
539            <li>'<strong>-f</strong>' (est un
540	    <strong>f</strong>ichier r�gulier)<br />
541	    Traite <em>cha�ne de test</em> comme un chemin et v�rifie
542	    s'il existe ou pas, et s'il s'agit d'un fichier r�gulier.</li>
543
544            <li>'<strong>-s</strong>' (est un fichier r�gulier d'une
545	    certaine <strong>t</strong>aille)<br />
546	    Traite <em>cha�ne de test</em> comme un chemin et v�rifie
547	    s'il existe ou pas, et s'il s'agit d'un fichier r�gulier
548	    dont la taille est sup�rieure � z�ro.</li>
549
550            <li>'<strong>-l</strong>' (est un
551	    <strong>l</strong>ien symbolique)<br />
552	    Traite <em>cha�ne de test</em> comme un chemin et v�rifie
553	    s'il existe ou pas, et s'il s'agit d'un lien
554	    symbolique.</li>
555
556            <li>'<strong>-x</strong>' (a le droit
557	    d'e<strong>x</strong>�cussion)<br />
558	    Traite <em>cha�ne de test</em> comme un chemin et v�rifie
559	    s'il existe ou pas, et a le droit d'ex�cution. Ce droit est
560	    d�termin� en accord avec le syst�me d'exploitation
561	    sous-jacent.</li>
562
563            <li>'<strong>-F</strong>' (test de l'existence d'un fichier
564	    via une sous-requ�te)<br />
565	    V�rifie si <em>cha�ne de test</em> est un fichier valide,
566	    accessible � travers tous les contr�les d'acc�s du serveur
567	    actuellement configur�s pour ce chemin. C'est une
568	    sous-requ�te interne qui effectue cette v�rification - �
569	    utiliser avec pr�cautions car les performances du serveur
570	    peuvent s'en trouver affect�es !</li>
571
572            <li>'<strong>-U</strong>' (yesy de l'existence d'une URL
573	    via une sous-requ�te)<br />
574	    V�rifie si <em>cha�ne de test</em> est une URL valide,
575	    accessible � travers tous les contr�les d'acc�s du serveur
576	    actuellement configur�s pour ce chemin. C'est une
577	    sous-requ�te interne qui effectue cette v�rification - �
578	    utiliser avec pr�cautions car les performances du serveur
579	    peuvent s'en trouver affect�es !</li>
580          </ul>
581
582<div class="note"><h3>Note :</h3>
583              Tous ces tests peuvent aussi �tre pr�fix�s par un point
584	      d'exclamation ('!') pour inverser leur signification.
585</div>
586        </li>
587
588	<li>Vous pouvez aussi d�finir certains drapeaux pour
589	l'<em>expression de comparaison</em> en ajoutant ces
590	<strong><code>[</code><em>drapeaux</em><code>]</code></strong>
591	comme troisi�me argument de la directive
592	<code>RewriteCond</code>, o� <em>drapeaux</em> est un
593	sous-ensemble s�par� par des virgules des drapeaux suivants :
594
595      <ul>
596        <li>'<strong><code>nocase|NC</code></strong>'
597	(<strong>n</strong>o <strong>c</strong>ase)<br />
598	Rend le test insensible � la casse - il n'est pas fait de
599	distinction entre majuscules et minuscules, � la fois dans le
600	d�veloppement de <em>cha�ne de test</em> et dans
601	<em>expression de comparaison</em>. Ce drapeau n'est pris en
602	compte que lors d'une comparaison entre <em>cha�ne de test</em>
603	et <em>expression de comparaison</em>. Il ne l'est pas pour les
604	v�rification par sous-requ�tes ou sur le syst�me de
605	fichiers.</li>
606
607        <li>
608          '<strong><code>ornext|OR</code></strong>'
609	  (<strong>ou</strong> condition suivante)<br />
610	  Permet de cha�ner les conditions de r�gles avec un OU au
611	  lieu du AND implicite. Exemple typique :
612
613<div class="example"><pre>
614RewriteCond %{REMOTE_HOST}  ^hote1  [OR]
615RewriteCond %{REMOTE_HOST}  ^hote2  [OR]
616RewriteCond %{REMOTE_HOST}  ^hote3
617RewriteRule ...r�gles concernant tous ces h�tes...
618</pre></div>
619
620          Sans ce drapeau, les paires
621	  condition/r�gle devraient �tre �crites trois fois.
622        </li>
623
624        <li>'<strong><code>novary|NV</code></strong>'
625	(<strong>n</strong>o <strong>v</strong>ary)<br />
626	Si la condition contient un en-t�te HTTP, ce drapeau emp�che
627	ce dernier d'�tre ajout� � l'en-t�te Vary de la r�ponse. <br />
628	L'utilisation de ce drapeau peut provoquer une mise en cache
629	incorrecte de la r�ponse, si la repr�sentation de cette r�ponse
630	varie avec la valeur de l'en-t�te consid�r�. Ce drapeau ne
631	devrait donc �tre utilis� que si l'on ma�trise parfaitement le
632	fonctionnement de l'en-t�te Vary.
633        </li>
634      </ul>
635      </li>
636     </ol>
637
638      <p><strong>Exemple :</strong></p>
639
640       <p>Pour r��crire la page d'accueil d'un site en fonction de
641       l'en-t�te ``<code>User-Agent:</code>'' de la requ�te, vous
642       pouvez utiliser ce qui suit : </p>
643
644<div class="example"><pre>
645RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla
646RewriteRule  ^/$                 /homepage.max.html  [L]
647
648RewriteCond  %{HTTP_USER_AGENT}  ^Lynx
649RewriteRule  ^/$                 /homepage.min.html  [L]
650
651RewriteRule  ^/$                 /homepage.std.html  [L]
652</pre></div>
653
654        <p>Explications : si vous utilisez un navigateur
655	(Netscape Navigator, Mozilla etc) qui s'identifie comme
656	'Mozilla', vous acc�derez � la page d'accueil max (qui
657	peut contenir des frames, ou d'autres ressources
658	particuli�res).
659	Si vous utilisez le navigateur Lynx (qui est un navigateur
660	bas� sur le texte), vous acc�derez � une page d'accueil min
661	(qui peut �tre une version con�ue pour une navigation simple
662	bas�e sur le texte).
663	Si aucune de ces conditions n'est satisfaite (vous utilisez tout
664	autre navigateur, ou votre navigateur s'identifie de mani�re non
665	standard), vous acc�derez � la page d'accueil std
666	(standard).</p>
667
668
669</div>
670<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
671<div class="directive-section"><h2><a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a> <a name="rewriteengine" id="rewriteengine">Directive</a></h2>
672<table class="directive">
673<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active ou d�sactive l'ex�cution du
674moteur de r��criture</td></tr>
675<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteEngine on|off</code></td></tr>
676<tr><th><a href="directive-dict.html#Default">D�faut:</a></th><td><code>RewriteEngine off</code></td></tr>
677<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</td></tr>
678<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
679<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
680<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
681</table>
682
683      <p>La directive <code class="directive">RewriteEngine</code> active ou
684      d�sactive l'ex�cution du moteur de r��criture. Si sa valeur est
685      <code>off</code>, ce module n'ex�cutera aucun traitement et ne
686      mettra pas � jour les variables d'environnement
687      <code>SCRIPT_URx</code>.</p>
688
689      <p>Pour d�sactiver le module, il vaut mieux utiliser cette
690      directive que commenter toutes les directives <code class="directive"><a href="#rewriterule">RewriteRule</a></code> !</p>
691
692      <p>Notez que les  h�tes virtuels n'h�ritent pas des
693      configurations de r��criture. Ceci implique que vous devez
694      ins�rer une directive <code>RewriteEngine on</code> dans chaque
695      h�te virtuel pour lequel vous souhaitez utiliser des r�gles
696      de r��criture.</p>
697
698      <p>Les directives <code class="directive">RewriteMap</code> du type
699      <code>prg</code> ne sont pas prises en compte au cours de
700      l'initialisation du serveur si elle ont �t� d�finies dans un
701      contexte o� la directive <code class="directive">RewriteEngine</code> n'a
702      pas �t� d�finie � <code>on</code>.</p>
703
704</div>
705<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
706<div class="directive-section"><h2><a name="RewriteLock" id="RewriteLock">RewriteLock</a> <a name="rewritelock" id="rewritelock">Directive</a></h2>
707<table class="directive">
708<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D�finit le nom du fichier verrou utilis� pour la
709synchronisation de <code class="directive"><a href="#rewritemap">RewriteMap</a></code></td></tr>
710<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteLock <em>chemin du fichier verrou</em></code></td></tr>
711<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur</td></tr>
712<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
713<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
714</table>
715      <p>Cette directive d�finit le nom du fichier utilis� comme
716      fichier verrou de synchronisation n�cessaire � mod_rewrite pour
717      communiquer avec les <em>programmes</em> li�s � <code class="directive"><a href="#rewritemap">RewriteMap</a></code>. D�finissez ce
718      fichier verrou dans un chemin local (et non sur un montage NFS)
719      si vous voulez utiliser un programme de comparaison pour la
720      r��criture. Il n'est pas n�cessaire pour les autres types de
721      comparaison pour la r��criture.</p>
722
723</div>
724<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
725<div class="directive-section"><h2><a name="RewriteLog" id="RewriteLog">RewriteLog</a> <a name="rewritelog" id="rewritelog">Directive</a></h2>
726<table class="directive">
727<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D�finit le nom du fichier utilis� pour la journalisation
728des traitements du moteur de r��criture</td></tr>
729<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteLog <em>chemin du fichier journal|redirection vers un pipe</em></code></td></tr>
730<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
731<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
732<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
733</table>
734      <p>La directive <code class="directive">RewriteLog</code> d�finit le nom
735      du fichier dans lequel le serveur journalise tout processus de
736      r��criture qu'il effectue. Si le nom&nbsp;ne commence pas par un
737      slash ('<code>/</code>'), il est consid�r� comme relatif � la
738      <em>Racine du serveur</em>. Cette directive ne doit appara�tre
739      qu'une seule fois dans la configuration du serveur.</p>
740
741<div class="note">    Il est d�conseill� de positionner
742	<em>chemin du fichier journal</em> � <code>/dev/null</code>
743	pour d�sactiver la journalisation des processus de r��criture,
744	car m�me si le moteur de r��criture n'envoie plus sa sortie
745	dans un fichier, il continue � cr�er un fichier journal en
746	interne, <strong>ce qui va avoir pour effet de ralentir le
747	serveur sans fournir aucun avantage � l'administrateur !
748	</strong> Pour d�sactiver la journalisation, vous pouvez
749	soit supprimer ou commenter la directive
750	<code class="directive">RewriteLog</code>, soit utiliser
751	<code>RewriteLogLevel 0</code> !
752</div>
753
754    <p>Le format de fichier journal <code class="directive">RewriteLog</code> se
755    pr�sente comme suit :</p>
756
757<table>
758<tr><th>Description</th><th> Exemple</th></tr>
759<tr>
760<td>Adresse IP de l'h�te distant</td>
761<td>192.168.200.166</td></tr>
762<tr><td>Nom de login didtant</td><td>en g�n�ral "-"</td></tr>
763<tr><td>nom d'authentification de l'utilisateur HTTP</td><td>nom
764d'utilisateur, ou "-" si non authentifi�</td></tr>
765<tr><td>Date et heure de la requ�te</td><td>[28/Aug/2009:13:09:09 --0400]</td></tr>
766<tr><td>Serveur virtuel et son identifiant</td><td>[www.example.com/sid#84a650]</td></tr>
767<tr><td>Identifiant de la requ�te et indication �ventuelle qu'il s'agit
768d'une sous-requ�te</td><td>[rid#9f0e58/subreq]</td></tr>
769<tr><td>Niveau de s�v�rit� de l'entr�e du journal</td><td>(2)</td></tr>
770<tr><td>Message d'erreur au format texte</td><td>forcing proxy-throughput with http://127.0.0.1:8080/index.html</td></tr>
771</table>
772
773
774<div class="note"><h3>S�curit�</h3>
775
776Se r�f�rer au document
777<a href="/misc/security_tips.html">Conseils � propos
778de la s�curit� dans Apache</a> pour plus de d�tails sur la mani�re
779dont votre s�curit� pourrait �tre compromise si le r�pertoire o� se
780trouvent les fichiers journaux est inscriptible par quiconque
781autre que l'utilisateur qui d�marre le serveur.
782</div>
783
784<div class="example"><h3>Exemple</h3><p><code>
785# Journalisation dans un fichier :<br />
786RewriteLog "/usr/local/var/apache/logs/rewrite.log"<br />
787<br />
788# Journalisation redirig�e vers un pipe:<br />
789RewriteLog "|/path/to/parser.pl"
790</code></p></div>
791
792
793</div>
794<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
795<div class="directive-section"><h2><a name="RewriteLogLevel" id="RewriteLogLevel">RewriteLogLevel</a> <a name="rewriteloglevel" id="rewriteloglevel">Directive</a></h2>
796<table class="directive">
797<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D�finit la verbosit� du fichier journal utilis�
798par le moteur de r��criture</td></tr>
799<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteLogLevel <em>niveau</em></code></td></tr>
800<tr><th><a href="directive-dict.html#Default">D�faut:</a></th><td><code>RewriteLogLevel 0</code></td></tr>
801<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
802<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
803<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
804</table>
805      <p>La directive <code class="directive">RewriteLogLevel</code> d�finit
806      le niveau de verbosit� du fichier journal de r��criture. Le
807      niveau par d�faut 0 signifie aucune journalisation, tandis que
808      9 ou plus signifie que pratiquement toutes les actions sont
809      journalis�es.</p>
810
811      <p>Pour d�sactiver la journalisation des actions de r��criture,
812      positionnez simplement <em>niveau</em> � 0. Ceci d�sactive
813      toute journalisation des actions de r��criture.</p>
814
815<div class="note"> Utiliser une valeur �lev�e pour <em>niveau</em> va ralentir
816	consid�rablement votre serveur Apache ! N'utilisez une
817	journalisation de la r��criture � un <em>niveau</em>
818	sup�rieur � 2 qu'� des fins de d�bogage !
819</div>
820
821<div class="example"><h3>Exemple</h3><p><code>
822RewriteLogLevel 3
823</code></p></div>
824
825
826</div>
827<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
828<div class="directive-section"><h2><a name="RewriteMap" id="RewriteMap">RewriteMap</a> <a name="rewritemap" id="rewritemap">Directive</a></h2>
829<table class="directive">
830<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D�finit une fonction de mise en correspondance pour la
831recherche de mots-cl�s</td></tr>
832<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteMap <em>nom de la correspondance</em> <em>type de
833correspondance</em>:<em>source de la correspondance</em>
834</code></td></tr>
835<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
836<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
837<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
838<tr><th><a href="directive-dict.html#Compatibility">Compatibilit�:</a></th><td>Il est possible de choisir entre plusieurs types de
839bases de donn�es depuis la version 2.0.41 d'Apache</td></tr>
840</table>
841      <p>La directive <code class="directive">RewriteMap</code> d�finit une
842      <em>Table de correspondance pour la r��criture</em> que les
843      fonctions de mise en correspondance
844      peuvent utiliser dans les cha�nes de substitution des r�gles
845      pour ins�rer/substituer des champs en recherchant des mots-cl�s.
846      La source utilis�e pour cette recherche peut �tre de plusieurs
847      types.</p>
848
849      <p><a id="mapfunc" name="mapfunc"><em>nom de la
850      correspondance</em></a> est le nom de la table de correspondance
851      et servira � sp�cifier une fonction de mise en correspondance
852      pour les cha�nes de substitution d'une r�gle de r��criture selon
853      une des constructions suivantes :</p>
854
855      <p class="indent">
856        <strong><code>${</code> <em>nom de la
857      correspondance</em> <code>:</code>
858        <em>mot-cl�</em> <code>}</code><br />
859         <code>${</code> <em>nom de la
860      correspondance</em> <code>:</code>
861        <em>mot-cl�</em> <code>|</code> <em>valeur par d�faut</em>
862        <code>}</code></strong>
863      </p>
864
865      <p>Lorsqu'une telle construction est rencontr�e, la table de
866      correspondance <em>Nom de la correspondance</em> est consult�e
867      et la cl� <em>mot-cl�</em> recherch�e. Si la cl� est trouv�e, la
868      construction est remplac�e par
869      la <em>valeur de remplacement</em>. Si la cl� n'est pas trouv�e,
870      elle est remplac�e par la <em>valeur par d�faut</em>, ou par une
871      cha�ne vide si aucune <em>valeur par d�faut</em> n'est
872      sp�cifi�e. La valeur vide se comporte comme si la
873      cl� �tait absente ; il est donc impossible de distinguer une
874      valeur vide d'une absence de cl�.</p>
875
876      <p>Par exemple, vous pouvez d�finir une directive
877      <code class="directive">RewriteMap</code> comme suit </p>
878
879      <div class="example"><p><code>
880      RewriteMap map-exemple txt:/chemin/vers/fichier/map.txt
881      </code></p></div>
882
883      <p>Vous pourrez ensuite utiliser cette table dans une
884      directive <code class="directive">RewriteRule</code> comme suit :</p>
885
886      <div class="example"><p><code>
887      RewriteRule ^/ex/(.*) ${map-exemple:$1}
888      </code></p></div>
889
890      <p>Les combinaisons suivantes pour <em>type de correspondance</em>
891      et <em>source de la correspondance</em>
892      peuvent �tre utilis�es :</p>
893
894      <ul>
895        <li>
896          <strong>Format texte standard</strong><br />
897           type de correspondance : <code>txt</code>, source de la
898	   correspondance : chemin du syst�me de fichiers Unix vers un
899	   fichier r�gulier valide
900
901          <p>Il s'agit de la mise en oeuvre standard de la table de
902	  correspondance pour la r��criture o�
903	  <em>source de la correspondance</em> est un fichier ASCII
904	  dont les diff�rentes lignes sont soit des lignes vides, soit
905	  des lignes de commentaires (commen�ant par un caract�re "#"),
906	  soit des paires de valeurs (une seule paire
907	  par ligne) comme suit :</p>
908
909          <p class="indent">
910            <strong><em>mot-cl�</em>
911            <em>valeur de remplacement</em></strong>
912          </p>
913
914<div class="example"><h3>Exemple</h3><pre>
915##
916##  map.txt -- table de correspondance pour la r��criture
917##
918
919Ralf.S.Engelschall    rse   # Bastard Operator From Hell
920(traduction � votre convenance)
921Mr.Joe.Average        joe   # Mr. Average
922</pre></div>
923
924<div class="example"><p><code>
925RewriteMap real-to-user txt:/chemin/vers/fichier/map.txt
926</code></p></div>
927        </li>
928
929        <li>
930          <strong>Format texte avec valeurs al�atoires</strong><br />
931           type de correspondance: <code>rnd</code>,
932	   source de la correspondance : chemin du syst�me de fichiers
933	   Unix vers un fichier r�gulier valide
934
935          <p>Ce format se diff�rencie du format texte standard
936	  pr�c�dent par l'ajout d'un traitement suppl�mentaire : en
937	  plus de la recherche de cl�s, le fichier est interpr�t� en
938	  tenant compte de la pr�sence �ventuelle dans les valeurs de
939	  remplacement de caract�res ``<code>|</code>'' signifiant
940	  ``ou''. En d'autres termes, ces caract�res ``<code>|</code>''
941	  permettent de sp�cifier un jeu de valeurs parmi lesquelles
942	  la valeur de retour sera choisie al�atoirement. Par exemple,
943	  vous pouvez utiliser les fichier de correspondance et
944	  directives suivants pour mettre en oeuvre une r�partition de
945	  charge al�atoire entre plusieurs serveurs en arri�re-plan,
946	  via un mandataire inverse. Les images sont envoy�es � un des
947	  serveurs de l'ensemble "statique", tandis que tout le
948	  reste est envoy� � un des serveurs de l'ensemble
949	  "dynamique".</p>
950          <p>Exemple:</p>
951
952<div class="example"><h3>Fichier de correspondances pour la r��criture</h3><pre>
953##
954##  map.txt -- correspondances pour la r��criture
955##
956
957static   www1|www2|www3|www4
958dynamic  www5|www6
959</pre></div>
960
961<div class="example"><h3>Directives de configuration</h3><p><code>
962RewriteMap serveurs rnd:/chemin/vers/fichier/map.txt<br />
963<br />
964RewriteRule ^/(.*\.(png|gif|jpg)) http://${serveurs:static}/$1
965[NC,P,L]<br />
966RewriteRule ^/(.*) http://${serveurs:dynamic}/$1 [P,L]
967</code></p></div>
968        </li>
969
970        <li>
971          <strong>Fichier � acc�s direct (Hash file)</strong><br />
972	  type de correspondance :
973	  <code>dbm[=<em>type</em>]</code>, source de la
974	  correspondance : chemin du syst�me de fichiers Unix vers un
975	   fichier r�gulier valide
976
977          <p>Ici, la source de la correspondance est un fichier binaire
978	  au format DBM contenant les m�mes donn�es qu'un fichier au
979	  format <em>Plein texte</em>, mais selon une repr�sentation
980	  particuli�re optimis�e en vue d'une recherche tr�s rapide.
981	  Le <em>type</em> peut �tre sdbm, gdbm, ndbm, ou db selon la
982	  configuration � la <a href="/install.html#dbm">compilation
983          </a>. Si <em>type</em> est omis, la valeur retenue
984	  sera la valeur par d�faut d�finie � la compilation.</p>
985
986          <p>La cr�ation du fichier dbm � partir d'un fichier texte
987	  s'effectue � l'aide de l'utilitaire <a href="/programs/httxt2dbm.html">httxt2dbm</a>.</p>
988
989<div class="example"><p><code>
990$ httxt2dbm -i fichier-source.txt -o fichier-dbm.map
991</code></p></div>
992        </li>
993
994        <li>
995          <strong>Fonction interne</strong><br />
996           type de la correspondance : <code>int</code>,
997	   source de la correspondance : fonction interne � Apache
998
999          <p>Ici, la source de la correspondance est une fonction
1000	  interne � Apache. Les d�veloppeurs de modules peuvent
1001	  fournir des fonctions internes suppl�mentaires en les
1002	  enregistrant via l'API
1003	  <code>ap_register_rewrite_mapfunc</code>. Les fonctions
1004	  fournies par d�faut sont :</p>
1005
1006          <ul>
1007            <li><strong>toupper</strong>:<br />
1008             Convertit tous les caract�res de la cl� en majuscules.</li>
1009
1010            <li><strong>tolower</strong>:<br />
1011             Convertit tous les caract�res de la cl� en minuscules.</li>
1012
1013            <li><strong>escape</strong>:<br />
1014             Traduit les caract�res sp�ciaux que contient la cl� en
1015	     s�quences hexad�cimales.</li>
1016
1017            <li><strong>unescape</strong>:<br />
1018             Reconvertit les s�quences hexad�cimales que contient la
1019	     cl� en caract�res sp�ciaux.</li>
1020          </ul>
1021        </li>
1022
1023        <li>
1024          <strong>Programme de r��criture externe</strong><br />
1025           type de la correspondance : <code>prg</code>,
1026	   source de la correspondance :
1027	   chemin du syst�me de fichiers Unix vers un
1028	   fichier r�gulier valide
1029
1030          <p>Ici, la source n'est pas un fichier de correspondances,
1031	  mais un programme. Pour le cr�er, vous pouvez utiliser le
1032	  langage de votre choix, mais le programme doit �tre un
1033	  ex�cutable (soit du code objet, soit un script
1034	  contenant le fameux
1035	  "<code>#!/chemin/vers/interpr�teur</code>" au d�but de sa
1036	  premi�re ligne).</p>
1037
1038         <p>Ce programme est lanc� une seule fois au d�marrage du
1039	 serveur Apache, puis communique avec le moteur de r��criture
1040	 via ses entr�e et sortie standards (<code>stdin</code>
1041	 et <code>stdout</code>). A chaque recherche effectu�e par la
1042	 fonction de correspondance, il re�oit sur son entr�e standard
1043	 la cl� � rechercher sous la forme d'une cha�ne de caract�res
1044	 termin�e par le caract�re "nouvelle ligne". Il doit ensuite
1045	 renvoyer sur sa sortie standard la valeur recherch�e sous
1046	 la forme d'une cha�ne de caract�res termin�e par le caract�re
1047	 "nouvelle ligne", ou la cha�ne de quatre
1048	 caract�res ``<code>NULL</code>'' en cas d'�chec
1049	 (<em>c'est � dire</em>
1050	 si aucune valeur ne correspond � la cl� fournie). Voici un
1051	 exemple de ce pourrait �tre un programme trivial qui
1052	 impl�menterait une correspondance 1:1 (<em>c'est � dire</em>,
1053	 cl� == valeur) :</p>
1054
1055	 <p>Les programmes de r��criture externes ne seront pas lanc�s
1056	 s'ils ont �t� d�finis dans un contexte o� la directive
1057	 <code class="directive">RewriteEngine</code> n'a pas �t� d�finie �
1058	 <code>on</code>.</p>
1059
1060<div class="example"><pre>
1061#!/usr/bin/perl
1062$| = 1;
1063while (&lt;STDIN&gt;) {
1064    # ...ins�rer ici le code de transformation ou de recherche...
1065    print $_;
1066}
1067</pre></div>
1068
1069          <p>Mais soyez tr�s prudent :</p>
1070
1071          <ol>
1072            <li>``<em>Ce programme doit �tre simple, basique</em>''
1073	    (MERCI).
1074	    Si ce programme se bloque, il bloquera aussi Apache
1075	    lorsqu'il tentera d'utiliser la r�gle de r��criture
1076	    correspondante.</li>
1077
1078            <li>L'utilisation d'entr�es/sorties avec tampon sur
1079	    <code>stdout</code> est une erreur courante. Ceci est �
1080	    proscrire sous peine de cr�er une boucle infernale ! Pour
1081	    �viter ceci, on utilise ``<code>$|=1</code>'' comme dans
1082	    l'exemple ci-dessus.</li>
1083
1084            <li>On peut d�finir la directive <code class="directive"><a href="#rewritelock">RewriteLock</a></code> pour sp�cifier
1085	    un fichier verrou que mod_rewrite pourra utiliser pour
1086	    synchroniser les communications avec le programme de
1087	    correspondance. Par d�faut, aucune synchronisation de ce
1088	    type n'est mise en oeuvre.</li>
1089          </ol>
1090        </li>
1091
1092
1093      </ul>
1094      <p>La directive <code class="directive">RewriteMap</code> peut
1095      appara�tre plusieurs fois. Utilisez une directive
1096      <code class="directive">RewriteMap</code> par fonction de correspondance
1097      pour d�clarer son fichier de correspondance pour la r��criture.
1098      Bien que vous ne puissiez pas <strong>d�clarer</strong> une
1099      table de correspondance dans un contexte de r�pertoire, vous
1100      pouvez bien entendu <strong>utiliser</strong> cette table dans un
1101      contexte de r�pertoire. </p>
1102
1103<div class="note"><h3>Note</h3> En ce qui concerne les fichiers au format DBM
1104et plein texte, les cl�s de recherches sont mises en cache en interne
1105jusqu'� ce que le <code>mtime (date de modification)</code> du fichier
1106soit modifi�, ou que le serveur soit red�marr�. Ainsi, certaines
1107fonctions de correspondance dans les r�gles peuvent �tre utilis�es pour
1108<strong>chaque</strong> requ�te. Cela ne pose pas probl�me, car la
1109recherche externe n'intervient qu'une seule fois !
1110</div>
1111
1112
1113</div>
1114<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1115<div class="directive-section"><h2><a name="RewriteOptions" id="RewriteOptions">RewriteOptions</a> <a name="rewriteoptions" id="rewriteoptions">Directive</a></h2>
1116<table class="directive">
1117<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure certaines options sp�ciales
1118pour le moteur de r��criture</td></tr>
1119<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteOptions <var>Options</var></code></td></tr>
1120<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</td></tr>
1121<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
1122<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
1123<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
1124<tr><th><a href="directive-dict.html#Compatibility">Compatibilit�:</a></th><td><code>MaxRedirects</code> n'est plus disponible depuis
1125la version version 2.1</td></tr>
1126</table>
1127
1128      <p>La directive <code class="directive">RewriteOptions</code> d�finit
1129      certaines options sp�ciales pour la configuration au niveau du
1130      serveur ou du r�pertoire. La cha�ne de caract�res <em>Option</em>
1131      ne peut actuellement prendre qu'une des valeurs suivantes :</p>
1132
1133      <dl>
1134      <dt><code>inherit</code></dt>
1135      <dd>
1136
1137      <p>Ceci force la configuration locale � h�riter de la
1138      configuration du niveau sup�rieur. Dans le contexte des h�tes
1139      virtuels, cela signifie que les correspondances, conditions et
1140      r�gles du serveur principal sont h�rit�es. Dans le contexte des
1141      r�pertoires, cela signifie que les conditions et r�gles de la
1142      configuration <code>.htaccess</code> du r�pertoire parent sont
1143      h�rit�es.</p>
1144
1145      <div class="warning">
1146      Les r�gles h�rit�es du niveau parent sont appliqu�es
1147      <strong>after</strong> apr�s les r�gles sp�cifi�es dans le niveau
1148      enfant.
1149      </div>
1150
1151      </dd>
1152
1153      <dt><code>AllowAnyURI</code></dt>
1154      <dd>
1155
1156      <p>A partir de la version 2.2.23 de httpd, lorsqu'une directive
1157      <code class="directive"><a href="#rewriterule">RewriteRule</a></code> est
1158      utilis�e dans un contexte de <code>serveur virtuel</code> ou de
1159      serveur principal, <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> ne la traitera que
1160      si l'URI de la requ�te correspond � un <a href="/directive-dict.html#Syntax">chemin d'URL</a>. Ceci permet
1161      d'�viter certains probl�mes de s�curit� o� certaines r�gles
1162      peuvent permettre l'expansion de mod�les inattendus (voir <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3368">CVE-2011-3368</a>
1163      et <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-4317">CVE-2011-4317</a>).
1164      Pour lever cette restriction, on peut activer l'option
1165      <code>AllowAnyURI</code>, et <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> va alors
1166      appliquer le jeu de r�gles � tout URI de requ�te, sans v�rifier si
1167      la cha�ne respecte la grammaire des chemins d'URL d�finie dans la
1168      sp�cification HTTP.</p>
1169
1170      <div class="warning">
1171      <h3>Avertissement en mati�re de s�curit�</h3> 
1172
1173      <p>L'activation de cette option expose le serveur � des
1174      probl�mes de s�curit� si les r�gles de r��criture n'ont pas �t�
1175      r�dig�es avec soin. Il est donc <strong>fortement
1176      recommand�</strong> de ne pas utiliser cette option. En
1177      particulier, prenez garde aux cha�nes d'entr�e contenant le
1178      caract�re '<code>@</code>' qui peut modifier l'interpr�tation de
1179      l'URI transform�, comme indiqu� dans les CVE ci-dessus.</p>
1180      </div>
1181      </dd>
1182	
1183	<dt><code>MergeBase</code></dt>
1184      <dd>
1185
1186      <p>Avec cette option, la valeur de <code class="directive"><a href="#rewritebase">RewriteBase</a></code> est copi�e depuis une
1187      origine explicitement d�finie dans tout sous-r�pertoire qui ne
1188      d�finit pas sa propre <code class="directive"><a href="#rewritebase">RewriteBase</a></code>. Par d�faut, jusqu'�
1189      la version 2.2.22, cette valeur n'�tait pas copi�e, alors qu'elle
1190      l'�tait avec la version 2.2.23 du serveur HTTP Apache. Le drapeau
1191      permettant de contr�ler explicitement ce comportement est
1192      disponible depuis la version 2.2.24.</p>
1193      </dd>
1194     </dl>
1195
1196
1197</div>
1198<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1199<div class="directive-section"><h2><a name="RewriteRule" id="RewriteRule">RewriteRule</a> <a name="rewriterule" id="rewriterule">Directive</a></h2>
1200<table class="directive">
1201<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>
1202<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteRule
1203      <em>Mod�le</em> <em>Substitution</em> [<em>drapeaux</em>]</code></td></tr>
1204<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, r�pertoire, .htaccess</td></tr>
1205<tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
1206<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
1207<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
1208</table>
1209      <p>La directive <code class="directive">RewriteRule</code> est le
1210      v�ritable cheval de trait de la r��criture. La directive peut
1211      appara�tre plusieurs fois, chaque instance d�finissant une
1212      r�gle de r��criture particuli�re. L'ordre dans lequel ces r�gles
1213      sont d�finies est important - il s'agit de l'ordre dans lequel
1214      les r�gles seront appliqu�es au cours du processus de
1215      r��criture.</p>
1216
1217      <p><a id="patterns" name="patterns"><em>Mod�le</em></a> est une
1218      <a id="regexp" name="regexp">expression rationnelle</a>
1219      compatible perl. Dans la premi�re r�gle de r��criture,
1220      l'expression est compar�e au
1221      <a href="/directive-dict.html#Syntax">chemin de l'URL</a> de la
1222      requ�te (%-decoded) ; les expressions suivantes sont compar�es � la sortie de
1223      la derni�re r�gle de r��criture qui a �t� appliqu�e.</p>
1224
1225<div class="note"><h3>Qu'est-ce qui est compar� ?</h3>
1226      
1227      <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
1228      d'abord compar� � la portion de l'URL situ�e entre le nom d'h�te
1229      �ventuellement accompagn� du port, et la cha�ne de param�tres (par
1230      exemple "/app1/index.html").</p>
1231
1232      <p>Dans les contextes de r�pertoire <code class="directive"><a href="/mod/core.html#directory">Directory</a></code> et htaccess, le
1233      <em>mod�le</em> est tout d'abord compar� au chemin du <em>syst�me
1234      de fichiers</em>, apr�s suppression du pr�fixe ou chemin de base
1235      ayant conduit � la r�gle <code class="directive">RewriteRule</code> (par
1236      exemple "app1/index.html" ou
1237      "index.html" selon l'endroit o� les directives sont d�finies).</p>
1238
1239      <p>Si vous voulez effectuer une comparaison en tenant compte du
1240      nom d'h�te, du port ou de la cha�ne de param�tres, utilisez une
1241      directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>
1242      comportant les variables
1243      <code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code>, ou
1244      <code>%{QUERY_STRING}</code>.</p>
1245
1246</div>
1247
1248<div class="note"><h3>R��critures dans un contexte de r�pertoire</h3>
1249<ul>
1250<li>L'utilisation du moteur de r��criture dans les
1251fichiers <a href="/howto/htaccess.html">.htaccess</a> et les sections
1252<code class="directive"><a href="/mod/core.html#directory">&lt;Directory&gt;</a></code> est un peu plus
1253complexe.</li>
1254
1255<li>Pour activer le moteur de r��criture dans ces contextes, vous devez
1256d�finir "<code>RewriteEngine On</code>" <strong>et</strong>
1257"<code>Options FollowSymLinks</code>". Si l'administrateur a d�sactiv�
1258la possibilit� de modifier l'option <code>FollowSymLinks</code> au
1259niveau du r�pertoire d'un utilisateur, vous ne pouvez pas utiliser le
1260moteur de r��criture. Cette restriction a �t� instaur�e � des fins de
1261s�curit�.</li>
1262
1263<li>Lorsqu'on utilise le moteur de r��criture dans un fichier
1264<code>.htaccess</code>, le chemin de base du r�pertoire courant (qui est
1265toujours le m�me pour ce m�me r�pertoire) est automatiquement
1266<em>supprim�</em> au cours de la comparaison avec le mod�le de la r�gle
1267de r��criture, et automatiquement <em>ajout�</em> lorsqu'une
1268substitution relative (ne d�butant pas par un slash ou un nom de
1269protocole) arrive � la fin d'un jeu de r�gles. Voir la directive
1270<code class="directive"><a href="#rewritebase">RewriteBase</a></code> pour plus de
1271d�tails � propos de l'ajout du pr�fixe apr�s les substitutions
1272relatives.</li>
1273
1274<li>Si vous souhaitez effectuer une comparaison en prenant en compte
1275l'int�gralit� du
1276chemin de l'URL dans un contexte de r�pertoire (htaccess), vous devez
1277utiliser la variable <code>%{REQUEST_URI}</code> dans la directive
1278<code class="directive">RewriteCond</code>.</li>
1279
1280<li>Le prefixe supprim� se termine toujours par un slash, ce qui
1281signifie que la comparaison s'effectue avec une cha�ne qui ne comporte
1282<em>jamais</em> de slash de d�but. Ainsi, un <em>mod�le</em> contenant
1283<code>^/</code> ne correspondra jamais dans un contexte de r�pertoire.</li>
1284
1285<li>Bien que les r�gles de r��criture soient permises du point de vue de
1286la syntaxe dans les sections <code class="directive"><a href="/mod/core.html#location">&lt;Location&gt;</a></code> et <code class="directive"><a href="/mod/core.html#files">&lt;Files&gt;</a></code>, elles n'y sont pas prises en compte, et
1287n'y sont � priori d'aucune utilit�.</li>
1288</ul>      
1289</div>
1290
1291	<p>Pour quelques conseils � propos des <a class="glossarylink" href="/glossary.html#regex" title="voir glossaire">expressions rationnelles</a>, voir le
1292	document <a href="/rewrite/intro.html#regex">Introduction �
1293	mod_rewrite</a>.</p>
1294
1295      <p>Dans mod_rewrite, on peut aussi utiliser le caract�re NON
1296      ('<code>!</code>') comme pr�fixe de mod�le. Ceci vous permet
1297      d'inverser la signification d'un mod�le, soit pour dire
1298      ``<em>si l'URL consid�r�e ne correspond <strong>PAS</strong> �
1299      ce mod�le</em>''. Le caract�re NON peut donc �tre utilis� �
1300      titre exceptionnel, lorsqu'il est plus simple d'effectuer une
1301      comparaison avec le mod�le invers�, ou dans la derni�re r�gle
1302      par d�faut.</p>
1303
1304<div class="note"><h3>Note</h3>
1305Si vous utilisez le caract�re NON pour inverser la signification d'un
1306mod�le, vous ne pouvez pas inclure de parties g�n�riques group�es dans
1307le mod�le. Ceci est d� au fait que, lorsque le mod�le ne correspond
1308pas (autrement dit, sa n�gation correspond), les groupes sont vides.
1309Ainsi, si vous utilisez des mod�les invers�s, vous ne pouvez
1310pas vous r�f�rer aux groupes par <code>$N</code> dans la cha�ne de
1311substitution !
1312</div>
1313
1314      <p>Dans une r�gle de r��criture,
1315      <a id="rhs" name="rhs"><em>Substitution</em></a> est la cha�ne
1316      de caract�res qui remplace le chemin de l'URL original qui
1317      correspondait au <em>Mod�le</em>. <em>Substitution</em> peut
1318      �tre :</p>
1319
1320      <dl>
1321
1322        <dt>un chemin du syst�me de fichiers</dt>
1323
1324        <dd>Il indique alors la localisation dans le syst�me de
1325	fichiers de la ressource qui doit �tre envoy�e au
1326	client. Les substitutions ne sont trait�es en tant que chemin du
1327	syst�me de fichiers que si les r�gles sont d�finies dans un
1328	contexte de serveur (virtualhost), et si le premier �l�ment de ce
1329	chemin existe dans le syst�me de fichiers.</dd>
1330
1331        <dt>chemin d'URL</dt>
1332
1333        <dd>Un chemin relatif � la valeur de <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code> vers la ressource qui
1334	doit �tre servie. Notez que <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>
1335	essaie de deviner si vous avez sp�cifi� un chemin du syst�me
1336	de fichiers ou un chemin d'URL en v�rifiant si la premi�re
1337	partie du chemin existe � la racine du syst�me de fichiers.
1338	Par exemple, si vous avez sp�cifi� comme cha�ne de
1339	<em>Substitution</em> <code>/www/file.html</code>, cette
1340	derni�re sera trait�e comme un chemin d'URL <em>� moins</em>
1341	qu'un r�pertoire nomm� <code>www</code> n'existe � la racine
1342	de votre syst�me de fichiers (ou dans le cas d'une
1343	r��criture au sein d'un fichier <code>.htaccess</code>,
1344	relativement � la racine des documents), auquel cas la cha�ne de
1345	substitution sera trait�e comme un chemin du syst�me de
1346	fichiers. Si vous d�sirez que d'autres directives de
1347	correspondance d'URL (comme la directive <code class="directive"><a href="/mod/mod_alias.html#alias">Alias</a></code>) soient appliqu�es au
1348	chemin d'URL r�sultant, utilisez le drapeau <code>[PT]</code>
1349	comme d�crit ci-dessous.</dd>
1350
1351        <dt>URL absolue</dt>
1352
1353        <dd>Si une URL absolue est sp�cifi�e,
1354	<code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> v�rifie si le nom d'h�te
1355	correspond � celui de l'h�te local. Si c'est le cas, le
1356	protocole et le nom d'h�te sont supprim�s, et ce qui reste est
1357	trait� comme un chemin d'URL. Dans le cas contraire, une
1358	redirection externe vers l'URL indiqu�e est effectu�e. Pour
1359	forcer une redirection externe vers l'h�te local, voir le
1360	drapeau <code>[R]</code> ci-dessous.</dd>
1361
1362        <dt><code>-</code> (tiret)</dt>
1363
1364        <dd>Un tiret indique qu'aucune substitution ne doit �tre
1365	effectu�e (le chemin consid�r� est transmis sans changement).
1366	Ceci est utile quand un drapeau doit �tre appliqu� sans
1367	modifier le chemin (voir ci-dessous).</dd>
1368
1369      </dl>
1370
1371      <p>En plus du texte, la cha�ne <em>Substition</em> peut
1372      comporter :</p>
1373
1374      <ol>
1375        <li>des r�f�rences arri�res (<code>$N</code>) vers le mod�le
1376	d'une directive RewriteRule</li>
1377
1378        <li>des r�f�rences arri�res (<code>%N</code>) vers le dernier
1379	mod�le d'une directive RewriteCond qui correspondait</li>
1380
1381        <li>des variables du serveur comme dans les cha�nes de test de
1382	condition d'une r�gle (<code>%{VARNAME}</code>)</li>
1383
1384        <li>des appels de
1385	<a href="#mapfunc">fonctions de comparaison</a>
1386	(<code>${nom correspondance:cl�|d�faut}</code>)</li>
1387      </ol>
1388
1389      <p>Les r�f�rences arri�res sont des identificateurs de la forme
1390      <code>$</code><strong>N</strong> (<strong>N</strong>=0..9), qui
1391      seront remplac�s par le contenu du <strong>N</strong>�me groupe
1392      du <em>Mod�le</em> qui correspondait. Les variables du serveur
1393      sont les m�mes que dans la <em>Cha�ne de test</em> d'une
1394      directive <code>RewriteCond</code>. Les fonctions de comparaison
1395      sont issues de la directive <code>RewriteMap</code> dans la
1396      section de laquelle elles sont d�crites. Ces trois types de
1397      variables sont �valu�es dans l'ordre ci-dessus.</p>
1398
1399      <p>Chaque r�gle de r��criture s'applique au r�sultat de la r�gle
1400       pr�c�dente, selon l'ordre dans lequel elles ont �t� d�finies dans
1401       le fichier de configuration. L'URL est <strong>int�gralement
1402      remplac�e</strong> par la cha�ne de <em>Substitution</em> et le
1403      processus de r��criture se poursuit jusqu'� ce que toutes les
1404      r�gles aient �t� appliqu�es, ou qu'il soit explicitement stopp�
1405      par un drapeau <a href="/rewrite/flags.html#flag_l"><code><strong>L</strong></code></a>,
1406      ou par un autre drapeau qui implique un arr�t imm�diat, comme
1407      <code><strong>END</strong></code> ou
1408      <code><strong>F</strong></code>.</p>
1409
1410     <div class="note"><h3>Modifier la cha�ne de requ�te</h3>
1411      <p>Par d�faut, la cha�ne de requ�te est transmise sans
1412      modification. Vous pouvez cependant cr�er dans la cha�ne de
1413      substitution des URLs dont une partie constitue une cha�ne de
1414      requ�te. Pour cela, ajoutez simplement un point d'interrogation
1415      dans la cha�ne de substitution pour indiquer que le texte qui
1416      suit doit �tre r�inject� dans la cha�ne de requ�te. Pour
1417      supprimer une cha�ne de requ�te, terminez simplement la cha�ne de
1418      substitution par un point d'interrogation. Pour combiner les
1419      nouvelles cha�nes de requ�te avec les anciennes, utilisez le
1420      drapeau <code>[QSA]</code>.</p>
1421     </div>
1422
1423      <p>En outre, vous pouvez sp�cifier des <a name="rewriteflags" id="rewriteflags">actions</a> sp�ciales � effectuer en ajoutant
1424      des
1425      <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
1426      comme troisi�me argument de la directive
1427      <code>RewriteRule</code>. <em>Flags</em> est une liste de valeurs
1428      d�par�es par des virgules, d�limit�e par des crochets, choisies
1429      parmi les drapeaux de la table suivante. Vous trouverez plus de
1430      d�tails et d'exemples, pour chaque drapeau, dans la <a href="/rewrite/flags.html">documentation sur les drapeaux de
1431      r��criture</a>.</p>
1432
1433<table class="bordered">
1434    <tr><th>Drapeaux et syntaxe</th>
1435        <th>Fonction</th>
1436    </tr>
1437    <tr>
1438        <td>B</td>
1439        <td>Echappe les caract�res non-alphanum�riques <em>avant</em>
1440	d'appliquer la transformation. <em><a href="/rewrite/flags.html#flag_b">d�tails ...</a></em></td>
1441    </tr>
1442    <tr>
1443        <td>chain|C</td>
1444        <td>La r�gle est cha�n�e avec la r�gle suivante. Si la r�gle
1445	�choue, la ou les r�gles avec lesquelles elle est est cha�n�e
1446	seront saut�es. <em><a href="/rewrite/flags.html#flag_c">d�tails ...</a></em></td>
1447    </tr>
1448    <tr>
1449        <td>cookie|CO=<em>NAME</em>:<em>VAL</em></td>
1450        <td>D�finit un cookie au niveau du navigateur client. La syntaxe
1451	compl�te est :
1452	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>
1453	<em><a href="/rewrite/flags.html#flag_co">d�tails ...</a></em>
1454        </td>
1455    </tr>
1456    <tr>
1457        <td>discardpath|DPI</td>
1458        <td>Supprime la partie PATH_INFO de l'URI r��crit. <em><a href="/rewrite/flags.html#flag_dpi">d�tails
1459        ...</a></em></td>
1460    </tr>
1461    <tr>
1462        <td>env|E=[!]<em>VAR</em>[:<em>VAL</em>]</td>
1463        <td>D�finit la variable d'environnement <em>VAR</em> (� la valeur
1464	<em>VAL</em> si elle est fournie). La variante !<em>VAR</em>
1465	annule la d�finition de la variable <em>VAR</em>.<em><a href="/rewrite/flags.html#flag_e">d�tails ...</a></em></td>
1466    </tr>
1467    <tr>
1468        <td>forbidden|F</td>
1469        <td>Renvoie une r�ponse 403 FORBIDDEN au navigateur client.
1470	<em><a href="/rewrite/flags.html#flag_f">d�tails ...</a></em></td>
1471    </tr>
1472    <tr>
1473        <td>gone|G</td>
1474        <td>Renvoie un message d'erreur 410 GONE au navigateur client. <em><a href="/rewrite/flags.html#flag_g">d�tails ...</a></em></td>
1475    </tr>
1476    <tr>
1477        <td>Handler|H=<em>Gestionnaire de contenu</em></td>
1478        <td>L'URI r�sultant est envoy� au <em>Gestionnaire de
1479	contenu</em> pour traitement. <em><a href="/rewrite/flags.html#flag_h">d�tails ...</a></em></td>
1480    </tr>
1481    <tr>
1482        <td>last|L</td>
1483        <td>Arr�te le processus de r��criture imm�diatement et n'applique
1484	plus aucune r�gle. Pr�tez une attention particuli�re aux mises
1485	en garde concernant les contextes de niveau r�pertoire et
1486	.htaccess (voir aussi le drapeau END). <em><a href="/rewrite/flags.html#flag_l">d�tails ...</a></em></td>
1487    </tr>
1488    <tr>
1489        <td>next|N</td>
1490        <td>R�ex�cute le processus de r��criture � partir de la premi�re
1491	r�gle, en utilisant le r�sultat du jeu de r�gles, sous r�serve
1492	qu'il y ait un point de d�part. <em><a href="/rewrite/flags.html#flag_n">d�tails
1493        ...</a></em></td>
1494    </tr>
1495    <tr>
1496        <td>nocase|NC</td>
1497        <td>Rend la comparaison entre mod�les insensible � la casse.
1498	<em><a href="/rewrite/flags.html#flag_nc">d�tails ...</a></em></td>
1499    </tr>
1500    <tr>
1501        <td>noescape|NE</td>
1502        <td>Emp�che mod_rewrite d'effectuer un �chappement hexad�cimal
1503	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>
1504    </tr>
1505    <tr>
1506        <td>nosubreq|NS</td>
1507        <td>La r�gle est saut�e si la requ�te courante est une
1508	sous-requ�te interne. <em><a href="/rewrite/flags.html#flag_ns">d�tails ...</a></em></td>
1509    </tr>
1510    <tr>
1511        <td>proxy|P</td>
1512        <td>Force l'envoi en interne de l'URL de substitution en tant
1513	que requ�te mandataire. <em><a href="/rewrite/flags.html#flag_p">d�tails
1514        ...</a></em></td>
1515    </tr>
1516    <tr>
1517        <td>passthrough|PT</td>
1518        <td>L'URI r�sultant est repass� au moteur de mise en
1519	correspondance des URLs pour y �tre trait� par d'autres
1520	traducteurs URI-vers-nom de fichier, comme <code>Alias</code> ou
1521	<code>Redirect</code>. <em><a href="/rewrite/flags.html#flag_pt">d�tails ...</a></em></td>
1522    </tr>
1523    <tr>
1524        <td>qsappend|QSA</td>
1525        <td>Ajoute toute cha�ne de param�tres pr�sente dans l'URL de la
1526	requ�te originale � toute cha�ne de param�tres cr��e dans la
1527	cible de r��criture. <em><a href="/rewrite/flags.html#flag_qsa">d�tails ...</a></em></td>
1528    </tr>
1529    <tr>
1530        <td>qsdiscard|QSD</td>
1531        <td>Supprime toute cha�ne de param�tres de l'URI entrant. <em><a href="/rewrite/flags.html#flag_qsd">d�tails
1532        ...</a></em></td>
1533    </tr>
1534    <tr>
1535        <td>redirect|R[=<em>code</em>]</td>
1536        <td>Force une redirection externe, avec un code de statut HTTP
1537	optionnel. <em><a href="/rewrite/flags.html#flag_r">d�tails ...</a></em>
1538        </td>
1539    </tr>
1540    <tr>
1541        <td>END</td>
1542        <td>Arr�te le processus de r��criture imm�diatement et
1543	n'applique plus aucune r�gle. Emp�che aussi l'ex�cution
1544	ult�rieure de r�gles de r��criture dans des contextes de
1545	r�pertoire et des fichiers .htaccess (disponible depuis la
1546	version 2.3.9) <em><a href="/rewrite/flags.html#flag_l">d�tails ...</a></em></td>
1547    </tr>
1548    <tr>
1549        <td>skip|S=<em>nombre</em></td>
1550        <td>Si la r�gle courante s'applique, le moteur de r��criture
1551	doit sauter les <em>nombre</em> r�gles suivantes. <em><a href="/rewrite/flags.html#flag_s">d�tails ...</a></em></td>
1552    </tr>
1553    <tr>
1554        <td>type|T=<em>MIME-type</em></td>
1555        <td>Force l'attribution du <a class="glossarylink" href="/glossary.html#type-mime" title="voir glossaire">Type-MIME</a>
1556	sp�cifi� au fichier cible. <em><a href="/rewrite/flags.html#flag_t">d�tails ...</a></em></td>
1557    </tr>
1558    </table>
1559
1560<div class="note"><h3>D�veloppement du r�pertoire home</h3>
1561<p> Quand la cha�ne de substitution commence par quelque chose comme
1562"/~user" (de mani�re explicite ou par r�f�rences arri�res), mod_rewrite
1563d�veloppe le r�pertoire home sans tenir compte de la pr�sence ou de la
1564configuration du module <code class="module"><a href="/mod/mod_userdir.html">mod_userdir</a></code>.</p>
1565
1566<p> Ce d�veloppement n'est pas effectu� si le drapeau <em>PT</em> est
1567utilis� dans la directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code></p>
1568</div>
1569
1570     <p>Voici toutes les combinaisons de substitution et leurs
1571     significations :</p>
1572
1573      <p><strong>Dans la configuration au niveau du serveur principal
1574      (<code>httpd.conf</code>)<br />
1575       pour la requ�te ``<code>GET
1576      /chemin/infochemin</code>'':</strong><br />
1577      </p>
1578
1579<div class="note"><pre>
1580<strong>R�gle</strong>                          <strong>R�sultat de la substitution</strong>
1581----------------------------------------------  ----------------------------------
1582^/chemin(.*) autre-chemin$1                      non valide, non support�
1583
1584^/chemin(.*) autre-chemin$1  [R]                 non valide, non support�
1585
1586^/chemin(.*) autre-chemin$1  [P]                 non valide, non support�
1587----------------------------------------------  ----------------------------------
1588^/chemin(.*) /autre-chemin$1                     /autre-chemin/infochemin
1589
1590^/chemin(.*) /autre-chemin$1 [R]                 http://cet-hte/autre-chemin/infochemin
1591                                                via redirection externe
1592
1593^/chemin(.*) /autre-chemin$1 [P]                 n'a pas lieu d'�tre, non support�
1594----------------------------------------------  ----------------------------------
1595^/chemin(.*) http://cet-hte/autre-chemin$1      /autre-chemin/infochemin
1596
1597^/chemin(.*) http://cet-hte/autre-chemin$1 [R]  http://cet-hte/autre-chemin/infochemin
1598                                                via redirection externe
1599
1600^/chemin(.*) http://cet-hte/autre-chemin$1 [P]  n'a pas lieu d'�tre, non support�
1601----------------------------------------------  ----------------------------------
1602^/chemin(.*) http://autre h�te/autre-chemin$1     http://autre h�te/autre-chemin/infochemin
1603                                                via redirection externe
1604
1605^/chemin(.*) http://autre h�te/autre-chemin$1 [R] http://autre h�te/autre-chemin/infochemin
1606                                                via redirection externe
1607                                                (le drapeau [R] est
1608						redondant)
1609
1610^/chemin(.*) http://autre h�te/autre-chemin$1 [P] http://autre h�te/autre-chemin/infochemin
1611                                                via un mandataire interne
1612</pre></div>
1613
1614      <p><strong>Dans une configuration de niveau r�pertoire pour
1615      <code>/chemin</code><br />
1616       (<code>/chemin/physique/vers/chemin/.htacccess</code>, avec
1617      <code>RewriteBase /chemin</code>)<br />
1618       pour la requ�te ``<code>GET
1619      /chemin/chemin-local/infochemin</code>'':</strong><br />
1620     </p>
1621
1622<div class="note"><pre>
1623<strong>R�gle</strong>                          <strong>R�sultat de la substitution</strong>
1624----------------------------------------------  ----------------------------------
1625^chemin-local(.*) autre-chemin$1                      /chemin/autre-chemin/infochemin
1626
1627^chemin-local(.*) autre-chemin$1  [R]                 http://cet-hte/chemin/autre-chemin/infochemin
1628                                                via redirection externe
1629
1630^chemin-local(.*) autre-chemin$1  [P]                 n'a pas lieu d'�tre, non support�
1631----------------------------------------------  ----------------------------------
1632^chemin-local(.*) /autre-chemin$1                     /autre-chemin/infochemin
1633
1634^chemin-local(.*) /autre-chemin$1 [R]                 http://cet-hte/autre-chemin/infochemin
1635                                                via redirection externe
1636
1637^chemin-local(.*) /autre-chemin$1 [P]                 n'a pas lieu d'�tre, non support�
1638----------------------------------------------  ----------------------------------
1639^chemin-local(.*) http://cet-hte/autre-chemin$1      /autre-chemin/infochemin
1640
1641^chemin-local(.*) http://cet-hte/autre-chemin$1 [R]  http://cet-hte/autre-chemin/infochemin
1642                                                via redirection externe
1643
1644^chemin-local(.*) http://cet-hte/autre-chemin$1 [P]  n'a pas lieu d'�tre, non support�
1645----------------------------------------------  ----------------------------------
1646^chemin-local(.*) http://autre h�te/autre-chemin$1     http://autre h�te/autre-chemin/infochemin
1647                                                via redirection externe
1648
1649^chemin-local(.*) http://autre h�te/autre-chemin$1 [R] http://autre h�te/autre-chemin/infochemin
1650                                                via redirection externe
1651                                                (le drapeau [R] est
1652						redondant)
1653
1654^chemin-local(.*) http://autre h�te/autre-chemin$1 [P] http://autre h�te/autre-chemin/infochemin
1655                                                via un mandataire interne
1656</pre></div>
1657  
1658</div>
1659</div>
1660<div class="bottomlang">
1661<p><span>Langues Disponibles: </span><a href="/en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
1662<a href="/fr/mod/mod_rewrite.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
1663</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&amp;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>
1664<script type="text/javascript"><!--//--><![CDATA[//><!--
1665var comments_shortname = 'httpd';
1666var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html';
1667(function(w, d) {
1668    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
1669        d.write('<div id="comments_thread"><\/div>');
1670        var s = d.createElement('script');
1671        s.type = 'text/javascript';
1672        s.async = true;
1673        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
1674        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
1675    }
1676    else { 
1677        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
1678    }
1679})(window, document);
1680//--><!]]></script></div><div id="footer">
1681<p class="apache">Copyright 2013 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
1682<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
1683if (typeof(prettyPrint) !== 'undefined') {
1684    prettyPrint();
1685}
1686//--><!]]></script>
1687</body></html>