]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_rewrite.html.fr
xforms
[apache] / docs / manual / mod / mod_rewrite.html.fr
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.5</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.5</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 <div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
31             anglaise pour les changements récents.</div>
32 <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
33 règles permettant de réécrire les URLs des requêtes
34 à la volée</td></tr>
35 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
36 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>rewrite_module</td></tr>
37 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_rewrite.c</td></tr></table>
38 <h3>Sommaire</h3>
39
40       <p>Le module <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> utilise un moteur de
41       réécriture à base de règles, basé sur un interpréteur
42       d'expressions rationnelles PCRE, pour réécrire les URLs à la volée. Par
43       défaut, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> met en correspondance une URL
44       avec le système de fichiers. Cependant, on peut aussi l'utiliser
45       pour rediriger une URL vers une autre URL, ou pour invoquer une
46       requête interne à destination du mandataire.</p>
47       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> fournit une méthode souple et
48       puissante pour manipuler les URLs en utilisant un nombre illimité
49       de règles. Chaque règle peut être associée à un nombre illimité de
50       conditions, afin de vous permettre de réécrire les URLs en
51       fonction de variables du serveur, de variables d'environnement,
52       d'en-têtes HTTP, ou de repères temporels.</p>
53       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> agit sur la totalité de l'URL, y
54       compris la partie chemin. Une règle de réécriture peut être
55       invoquée dans <code>httpd.conf</code> ou dans un fichier
56       <code>.htaccess</code>. Le chemin généré par une règle de
57       réécriture peut inclure une chaîne de paramètres, ou peut renvoyer
58       vers un traitement secondaire interne, une redirection vers une
59       requête externe ou vers le mandataire interne.</p>
60
61       <p>Vous trouverez d'avantage de détails, discussions et exemples
62       dans la
63       <a href="../rewrite/">documentation détaillée
64       sur mod_rewrite</a>.</p>
65 </div>
66 <div id="quickview"><h3 class="directives">Directives</h3>
67 <ul id="toc">
68 <li><img alt="" src="../images/down.gif" /> <a href="#rewritebase">RewriteBase</a></li>
69 <li><img alt="" src="../images/down.gif" /> <a href="#rewritecond">RewriteCond</a></li>
70 <li><img alt="" src="../images/down.gif" /> <a href="#rewriteengine">RewriteEngine</a></li>
71 <li><img alt="" src="../images/down.gif" /> <a href="#rewritemap">RewriteMap</a></li>
72 <li><img alt="" src="../images/down.gif" /> <a href="#rewriteoptions">RewriteOptions</a></li>
73 <li><img alt="" src="../images/down.gif" /> <a href="#rewriterule">RewriteRule</a></li>
74 </ul>
75 <h3>Sujets</h3>
76 <ul id="topics">
77 <li><img alt="" src="../images/down.gif" /> <a href="#logging">Journalisation</a></li>
78 </ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
79 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
80 <div class="section">
81 <h2><a name="logging" id="logging">Journalisation</a></h2>
82
83     <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> offre une journalisation détaillée
84     de ses actions aux niveaux de journalisation <code>trace1</code> à
85     <code>trace8</code>. Le niveau de journalisation peut être défini de
86     manière spécifique à <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> via la directive
87     <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> : jusqu'au niveau
88     <code>debug</code> aucune action n'est journalisée, alors qu'elles
89     le sont pratiquement toutes au niveau <code>trace8</code>.</p>
90
91     <div class="note">
92       L'utilisation d'un niveau de journalisation élevé pour
93       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> va ralentir votre serveur HTTP Apache
94       de manière dramatique ! N'utilisez un niveau de journalisation
95       supérieur à <code>trace2</code> qu'à des fins de débogage !
96     </div>
97
98     <div class="example"><h3>Exemple</h3><p><code>
99       LogLevel alert rewrite:trace3
100     </code></p></div>
101
102     <div class="note"><h3>RewriteLog</h3>
103       <p>Ceux qui sont familiers avec les versions précédentes de
104       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> vont probablement rechercher en vain les
105       directives <code>RewriteLog</code> et
106       <code>RewriteLogLevel</code>. Elles ont été en effet remplacées
107       par une configuration de la journalisation par module, comme
108       mentionné plus haut.
109       </p>
110
111       <p>Pour extraire les traces spécifiques à
112       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, affichez le fichier journal en
113       redirigeant la sortie vers grep :</p>
114     <div class="example"><p><code>
115     tail -f error_log|fgrep '[rewrite:'
116     </code></p></div>
117     </div>
118
119 </div>
120 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
121 <div class="directive-section"><h2><a name="RewriteBase" id="RewriteBase">RewriteBase</a> <a name="rewritebase" id="rewritebase">Directive</a></h2>
122 <table class="directive">
123 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit l'URL de base pour les réécritures au niveau
124 répertoire</td></tr>
125 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteBase <em>chemin URL</em></code></td></tr>
126 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>Pas de valeur par défaut</code></td></tr>
127 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
128 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
129 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
130 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
131 </table>
132       <p>La directive <code class="directive">RewriteBase</code> permet de
133       spécifier le préfixe d'URL à utiliser dans un contexte de
134       répertoire (htaccess) pour les directives
135       <code class="directive">RewriteRule</code> qui réécrivent vers un chemin
136       relatif.</p>
137       <p>Cette directive est <em>obligatoire</em> si vous utilisez un
138       chemin relatif dans une substitution, et dans un contexte de
139       répertoire (htaccess), sauf si au moins une de ces conditions est
140       vérifiée :</p>
141       <ul>
142           <li>La requête initiale, ainsi que la substitution, sont dans
143           la <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> (c'est à
144           dire que pour y accéder, il n'est pas nécessaire d'utiliser
145           une directive telle qu'<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>).</li>
146           <li>Le chemin du système de fichiers vers le répertoire
147           contenant la <code class="directive">RewriteRule</code>, suffixé par
148           la substitution relative est aussi valide en tant qu'URL sur
149           le serveur (ce qui est rare).</li>
150       </ul>
151
152 <p>Dans l'exemple ci-dessous, la directive
153 <code class="directive">RewriteBase</code> est nécessaire afin d'éviter une
154 réécriture en http://example.com/opt/myapp-1.2.3/welcome.html car la
155 ressource n'était pas relative à la racine des documents. Cette erreur
156 de configuration aurait conduit le serveur à rechercher un répertoire
157 "opt" à la racine des documents.</p>
158
159 <div class="example"><pre>
160 DocumentRoot /var/www/example.com
161 Alias /myapp /opt/myapp-1.2.3
162 &lt;Directory /opt/myapp-1.2.3&gt;
163 RewriteEngine On
164 RewriteBase /myapp/
165 RewriteRule ^index\.html$  welcome.html 
166 &lt;/Directory&gt;
167 </pre></div>
168
169 </div>
170 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
171 <div class="directive-section"><h2><a name="RewriteCond" id="RewriteCond">RewriteCond</a> <a name="rewritecond" id="rewritecond">Directive</a></h2>
172 <table class="directive">
173 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une condition qui devra être satisfaite pour que
174 la réécriture soit effectuée
175 </td></tr>
176 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code> RewriteCond
177       <em>chaîne de test</em> <em>expression de comparaison</em></code></td></tr>
178 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
179 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
180 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
181 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
182 </table>
183       <p>La directive <code class="directive">RewriteCond</code> permet de définir une
184       condition d'exécution d'une règle. Une ou plusieurs conditions
185       <code class="directive">RewriteCond</code> peuvent précéder une
186       directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code>. La règle de réécriture correspondante n'est
187       ainsi exécutée que si ces conditions sont satisfaites,
188       <strong>et</strong> si l'URI correspond au modèle spécifié dans la
189       règle.</p>
190
191       <p><em>TestString</em> est une chaîne qui peut contenir les
192       extensions suivantes en plus du texte simple :</p>
193
194       <ul>
195         <li>
196           <strong>références arrières de règle de réécriture</strong> :
197           ce sont des références arrières de la forme
198           <strong><code>$N</code></strong> (0 &lt;= N &lt;= 9). $1 à $9
199           permettent d'accéder aux parties regroupées (entre
200           parenthèses) du modèle, issues de la <code>RewriteRule</code>
201           concernée par le jeu de conditions <code>RewriteCond</code>
202           courant. $0 donne accès à l'ensemble de la chaîne
203           correspondant au modèle.</li>
204         <li>
205           <strong>Références arrières de condition de réécriture
206           </strong> : ce sont des références arrières de la forme
207           <strong><code>%N</code></strong> (0 &lt;= N &lt;= 9). %1 à %9
208           permettent d'accéder aux parties regroupées (entre
209           parenthèses) du modèle, issues de la <code>RewriteRule</code>
210           concernée par le jeu de conditions <code>RewriteCond</code>
211           courant. %0 donne accès à l'ensemble de la chaîne
212           correspondant au modèle.</li>
213         <li>
214           <strong>extensions de table de réécriture</strong> :
215           ce sont des extensions de la forme <strong><code>${nomTable:clé|défaut}</code></strong>. Voir la <a>href="#mapfunc"&gt;documentation sur RewriteMap</a>
216            pour plus de détails.
217         </li>
218         <li>
219           <strong>Variables du serveur</strong> :
220           ce sont des variables de la forme
221           <strong><code>%{</code> <em>NAME_OF_VARIABLE</em> <code>}</code></strong>,
222             où <em>NOM_DE_VARIABLE</em> peut contenir une chaîne issue
223             de la liste suivante :
224
225           <table>
226           
227             <tr>
228               <th>En-têtes HTTP :</th> <th>connexion &amp; requête:</th> <th />
229             </tr>
230
231             <tr>
232               <td>
233                  HTTP_USER_AGENT<br />
234                  HTTP_REFERER<br />
235                  HTTP_COOKIE<br />
236                  HTTP_FORWARDED<br />
237                  HTTP_HOST<br />
238                  HTTP_PROXY_CONNECTION<br />
239                  HTTP_ACCEPT<br />
240               </td>
241
242               <td>
243                  REMOTE_ADDR<br />
244                  REMOTE_HOST<br />
245                  REMOTE_PORT<br />
246                  REMOTE_USER<br />
247                  REMOTE_IDENT<br />
248                  REQUEST_METHOD<br />
249                  SCRIPT_FILENAME<br />
250                  PATH_INFO<br />
251                  QUERY_STRING<br />
252                  AUTH_TYPE<br />
253               </td>
254
255               <td />
256             </tr>
257
258             <tr>
259               <th>variables internes au serveur :</th> <th>date et heure :</th> <th>spéciaux :</th>
260             </tr>
261
262             <tr>
263               <td>
264                  DOCUMENT_ROOT<br />
265                  SERVER_ADMIN<br />
266                  SERVER_NAME<br />
267                  SERVER_ADDR<br />
268                  SERVER_PORT<br />
269                  SERVER_PROTOCOL<br />
270                  SERVER_SOFTWARE<br />
271               </td>
272
273               <td>
274                  TIME_YEAR<br />
275                  TIME_MON<br />
276                  TIME_DAY<br />
277                  TIME_HOUR<br />
278                  TIME_MIN<br />
279                  TIME_SEC<br />
280                  TIME_WDAY<br />
281                  TIME<br />
282               </td>
283
284               <td>
285                  API_VERSION<br />
286                  THE_REQUEST<br />
287                  REQUEST_URI<br />
288                  REQUEST_FILENAME<br />
289                  IS_SUBREQ<br />
290                  HTTPS<br />
291                  REQUEST_SCHEME<br />
292               </td>
293             </tr>
294           </table>
295
296                 <p>Ces variables correspondent toutes aux en-têtes MIME
297                 HTTP de mêmes noms, au variables C du serveur HTTP Apache, ou
298                 aux champs <code>struct tm</code> du système Unix. La
299                 plupart d'entre elles sont documentées ailleurs dans le
300                 manuel ou dans la spécification CGI.</p>
301
302                 <p>SERVER_NAME et SERVER_PORT dépendent respectivement
303                 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>
304
305                 <p>Parmi les variables
306                 spécifiques à mod_rewrite, ou trouve les suivantes :</p>
307         <div class="note">
308                 <dl>
309                   <dt><code>IS_SUBREQ</code></dt>
310
311                   <dd>Contient le texte "true" si la requête en cours
312                   de traitement est une sous-requête, "false" dans le
313                   cas contraire. Une sous-requête est générée quand un
314                   module a besoin de se référer à des fichiers ou URIs
315                   addidionnels pour pouvoir mener à bien sa tâche.</dd>
316
317                   <dt><code>API_VERSION</code></dt>
318
319                   <dd>C'est la version de l'API des modules Apache httpd
320                   (l'interface interne entre le serveur et les modules)
321                   pour la construction courante de httpd, telle qu'elle
322                   est définie dans include/ap_mmn.h. La version de l'API
323                   des modules correspond à la version du serveur Apache
324                   httpd
325                   utilisé (par exemple, pour la version 1.3.14 d'Apache
326                   httpd,
327                   il s'agit de la version 19990320:10), mais intéresse
328                   principalement les auteurs de modules.</dd>
329
330                   <dt><code>THE_REQUEST</code></dt>
331
332                   <dd>La ligne de requête HTTP complète envoyée par le
333                   navigateur au serveur (par exemple, "<code>GET
334                   /index.html HTTP/1.1</code>"), à l'exclusion de tout
335                   en-tête ajouté par le navigateur. Cette
336                   valeur n'a pas été déséchappée (décodée), à la
337                   différence de la plupart des variables suivantes.</dd>
338
339                   <dt><code>REQUEST_URI</code></dt>
340
341                   <dd>La partie chemin de l'URI de la requête, comme
342                   "/index.html". En particulier, ceci exclut la chaîne
343                   de paramètres qui est quant à elle disponible via sa
344                   propre variable <code>QUERY_STRING</code>.</dd>
345
346                   <dt><code>REQUEST_FILENAME</code></dt>
347
348                   <dd>Le chemin complet local au système de fichiers
349                   du fichier ou du script correspondant
350                   à la requête, s'il a déjà été déterminé par le serveur
351                   au moment où on y fait référence. Dans le cas
352                   contraire, et en particulier dans le cas d'un serveur
353                   virtuel, <code>REQUEST_FILENAME</code> contient la
354                   valeur de <code>REQUEST_URI</code>.</dd>
355
356                   <dt><code>HTTPS</code></dt>
357
358                   <dd>Contient le texte "on" si la connexion
359                   utilise SSL/TLS, "off" dans le cas contraire
360                   (Cette variable peut être utilisée sans problème, que
361                   <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non.</dd>
362
363                   <dt><code>REQUEST_SCHEME</code></dt>
364
365                   <dd>Contient le protocole de la requête (en général
366                   "http" ou "https"). La valeur peut être modifiée par
367                   la directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>.</dd>
368
369                 </dl>
370 </div>
371         </li>
372       </ul>
373
374       <p>Si la <em>chaîne de test</em> contient la valeur spéciale
375       <code>expr</code>, <em>expression de comparaison</em> sera traité
376       en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>.</p>
377
378       <p>Autres points à connaître ::</p>
379       <ol>
380         <li>
381         <p>Les variables <code>SCRIPT_FILENAME</code> et
382         <code>REQUEST_FILENAME</code> contiennent toutes deux la valeur
383         du champ <code>filename</code> de la
384         structure interne <code>request_rec</code>du serveur HTTP Apache.
385         Le premier nom correspond au nom de variable bien connu CGI,
386         alors que le second est l'équivalent de REQUEST_URI (qui
387         contient la valeur du champ <code>uri</code> de
388         <code>request_rec</code>).</p>
389         <p>Si une substitution intervient et si la réécriture se
390         poursuit, la valeur des deux variables sera mise à jour en
391         conséquence.</p>
392         <p>Dans le contexte du serveur principal (c'est à dire avant que
393         la requête ne soit mise en correspondance avec le système de
394         fichiers), SCRIPT_FILENAME et REQUEST_FILENAME  ne peuvent pas
395         contenir le chemin entier dans le système de fichiers local car
396         ce chemin b'est pas connu à ce stade du traitement. Dans ce cas,
397         les deux variables contiendront la valeur de REQUEST_URI. Pour
398         obtenir le chemin complet de la requête dans le système de
399         fichiers local dans le contexte du serveur principal, utilisez une
400         référence avant à base d'URL
401         <code>%{LA-U:REQUEST_FILENAME}</code> pour déterminer la valeur
402         finale de REQUEST_FILENAME.</p></li>
403
404
405         <li>
406         <code>%{ENV:<em>variable</em>}</code>, où <em>variable</em> peut
407         correspondre à une variable d'environnement quelconque.</li>
408         <li>
409         <code>%{ENV:variable}</code> est aussi disponible, où
410         <em>variable</em> peut correspondre à toute variable
411         d'environnement. Peut être consulté via des structures internes
412         d'Apache httpd et (si on ne les trouve pas ici) via la fonction
413         <code>getenv()</code> à partir du processus du serveur Apache
414         httpd.</li>
415
416         <li>Que <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non, on peut
417         utiliser <code>%{SSL:variable}</code>, où <em>variable</em>
418         peut être remplacé par le nom d'une
419         <a href="mod_ssl.html#envvars">variable
420         d'environnement SSL</a> . Si <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> n'est pas
421         chargé, cette variable contiendra toujours une chaîne vide.
422         Exemple : <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> pourra
423         contenir la valeur <code>128</code>.</li>
424
425         <li>
426         On peut utiliser <code>%{HTTP:en-tête}</code>, où
427         <em>en-tête</em> peut correspondre à tout nom d'en-tête MIME
428         HTTP, pour extraire la valeur d'un en-tête envoyé dans la
429         requête HTTP. Par exemple, <code>%{HTTP:Proxy-Connection}</code>
430         contiendra la valeur de l'en-tête HTTP
431         "<code>Proxy-Connection:</code>".
432         Si on utilise un en-tête HTTP
433         dans une condition, et si cette condition est évaluée à
434         <code>vrai</code> pour la requête, cet en-tête sera ajouté à l'en-tête Vary de
435         la réponse. Il ne le sera pas si la condition est évaluée à
436         <code>faux</code>. L'ajout de l'en-tête HTTP à l'en-tête Vary
437         est nécessaire à une mise en cache appropriée.
438         <p>Il faut garder à l'esprit que les conditions suivent une
439         logique de cout-circuit si le drapeau
440         '<strong><code>ornext|OR</code></strong>' est utilisé, et que de
441         ce fait, certaines d'entre elles ne seront pas évaluées.</p>
442         </li>
443
444         <li>A des fins de référence avant, on peut utiliser,
445         <code>%{LA-U:variable}</code>, qui
446         permet d'effectuer une sous-requête interne à base d'URL, afin
447         de déterminer la valeur finale de <em>variable</em>. Ceci permet
448         d'accéder à la valeur d'une variable pour la réécriture inconnue
449         à ce stade du traitement, mais qui sera définie au
450         cours d'une phase ultérieure.
451         <p>Par exemple, pour effectuer une réécriture dépendant de la
452         variable <code>REMOTE_USER</code> dans le contexte du serveur
453         principal (fichier <code>httpd.conf</code>), vous devez utiliser
454         <code>%{LA-U:REMOTE_USER}</code> - cette variable est définie
455         par la phase d'autorisation qui intervient <em>après</em> la
456         phase de traduction d'URL (pendant laquelle mod_rewrite opère).</p>
457         <p>Par contre, comme mod_rewrite implémente son contexte de
458         répertoire (fichier <code>.htaccess</code>) via la phase Fixup
459         de l'API, et comme la phase d'autorisation intervient
460         <em>avant</em> cette dernière, vous pouvez vous contenter
461         d'utiliser <code>%{REMOTE_USER}</code> dans ce contexte.</p></li>
462
463         <li>
464         <code>%{LA-F:variable}</code> peut être utilisée pour effectuer
465         une sous-requête interne (basée sur le nom de fichier), afin de
466         déterminer la valeur finale de <em>variable</em>. La plupart du
467         temps, elle est identique à LA-U (voir ci-dessus).</li>
468       </ol>
469
470
471       <p><em>expression de comparaison</em> est une expression
472       rationnelle qui est appliquée à l'instance actuelle de
473       <em>chaîne de test</em>. <em>chaîne de test</em> est d'abord
474       évaluée, puis comparée à
475       l'<em>expression de comparaison</em>.</p>
476
477       <p><em>expression de comparaison</em> est en général une
478       <em>expression rationnelle compatible perl</em>, mais vous
479       disposez des syntaxes supplémentaires suivantes pour effectuer
480       d'autres tests utiles sur <em>chaîne de test</em> :
481       </p>
482
483       <ol>
484         <li>Vous pouvez préfixer l'expression avec un caractère
485         '<code>!</code>' (point d'exclamation) pour indiquer une
486         expression de <strong>non</strong>-correspondance.</li>
487
488         <li>Vous pouvez effectuer des comparaisons lexicographiques de
489         chaînes :
490
491           <ul>
492             <li>'<strong>&lt;expression</strong>' (inférieur au sens
493             lexicographique)<br />
494             Traite l'<em>expression</em> comme une chaîne de
495             caractères et la compare lexicographiquement à
496             <em>chaîne de test</em>. La condition est satisfaite si
497             <em>chaîne de test</em> est inférieure au sens
498             lexicographique à l'<em>expression</em>.</li>
499
500             <li>'<strong>&gt;expression</strong>' (supérieur au sens
501             lexicographique)<br />
502             Traite l'<em>expression</em> comme une chaîne de
503             caractères et la compare lexicographiquement à
504             <em>chaîne de test</em>. La condition est satisfaite si
505             <em>chaîne de test</em> est supérieure au sens
506             lexicographique à l'<em>expression</em>.</li>
507
508             <li>'<strong>=expression</strong>' (égal au sens
509             lexicographique)<br />
510             Traite l'<em>expression</em> comme une chaîne de
511             caractères et la compare lexicographiquement à
512             <em>chaîne de test</em>. La condition est satisfaite si
513             <em>chaîne de test</em> est égale au sens
514             lexicographique à l'<em>expression</em> (les deux chaînes
515             sont exactement identiques, caractère pour caractère). Si
516             <em>expression</em> est <code>""</code> (deux guillemets),
517             <em>chaîne de test</em> est comparée à la chaîne vide.</li>
518
519             <li>'<strong>&lt;=expression de comparaison</strong>' (inférieur ou égal à
520             au sens lexicographique)<br />
521             Considère l'<em>expression de comparaison</em> comme une
522             chaîne de caractères et la compare au sens lexicographique à
523             la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
524             précède lexicographiquement <em>expression de comparaison</em>, ou est
525             égale à <em>expression de comparaison</em> (les deux chaînes
526             sont identiques, caractère pour caractère).</li>
527
528             <li>'<strong>&gt;=expression de comparaison</strong>'
529             (supérieur ou égal à au sens lexicographique)<br />
530             Considère l'<em>expression de comparaison</em> comme une
531             chaîne de caractères et la compare au sens lexicographique à
532             la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
533             suit lexicographiquement <em>expression de comparaison</em>, ou est
534             égale à <em>expression de comparaison</em> (les deux chaînes
535             sont identiques, caractère pour caractère).</li>
536         </ul></li>
537
538         <li>
539           Vous pouvez effectuer des comparaisons d'entiers :
540           <ul>
541
542             <li>'<strong>-eq</strong>' (est numériquement égal à)<br />
543             La <em>chaîne de test</em> est considérée comme un entier,
544             et est comparée numériquement à l'<em>expression de
545             comparaison</em>. Vrai si les deux expressions sont
546             numériquement égales.</li>
547
548             <li>'<strong>-ge</strong>' (est numériquement supérieur ou
549             égal à)<br />
550             La <em>chaîne de test</em> est considérée comme un entier,
551             et est comparée numériquement à l'<em>expression de
552             comparaison</em>. Vrai si <em>chaîne de test</em> est
553             numériquement
554             supérieure ou égale à <em>expression de comparaison</em>.</li>
555
556              <li>'<strong>-gt</strong>' (est numériquement supérieur à)<br />
557             La <em>chaîne de test</em> est considérée comme un entier,
558             et est comparée numériquement à l'<em>expression de
559             comparaison</em>. Vrai si <em>chaîne de test</em> est
560             numériquement
561             supérieure à <em>expression de comparaison</em>.</li>
562
563             <li>'<strong>-le</strong>' (est numériquement inférieur ou
564             égal à)<br />
565             La <em>chaîne de test</em> est considérée comme un entier,
566             et est comparée numériquement à l'<em>expression de
567             comparaison</em>. Vrai si <em>chaîne de test</em> est
568             numériquement
569             inférieure ou égale à <em>expression de comparaison</em>.
570             Attention à la confusion avec le drapeau <strong>-l</strong>
571             en utilisant la variante the <strong>-L</strong> ou
572             <strong>-h</strong>.</li>
573
574              <li>'<strong>-lt</strong>' (est numériquement inférieur à)<br />
575             La <em>chaîne de test</em> est considérée comme un entier,
576             et est comparée numériquement à l'<em>expression de
577             comparaison</em>. Vrai si <em>chaîne de test</em> est
578             numériquement
579             inférieure à <em>expression de comparaison</em>.
580             Attention à la confusion avec le drapeau <strong>-l</strong>
581             en utilisant la variante the <strong>-L</strong> ou
582             <strong>-h</strong>.</li>
583
584            </ul>
585         </li>
586
587         <li>Vous pouvez effectuer différents tests sur les attributs de
588         fichier :
589           <ul>
590
591             <li>'<strong>-d</strong>' (est un répertoire -
592             <strong>d</strong>irectory)<br />
593             Traite <em>chaîne de test</em> comme un chemin et vérifie
594             s'il existe ou pas, et s'il s'agit d'un répertoire.</li>
595
596             <li>'<strong>-f</strong>' (est un
597             <strong>f</strong>ichier régulier)<br />
598             Traite <em>chaîne de test</em> comme un chemin et vérifie
599             s'il existe ou pas, et s'il s'agit d'un fichier régulier.</li>
600
601             <li>'<strong>-F</strong>' (test de l'existence d'un fichier
602             via une sous-requête)<br />
603             Vérifie si <em>chaîne de test</em> est un fichier valide,
604             accessible à travers tous les contrôles d'accès du serveur
605             actuellement configurés pour ce chemin. C'est une
606             sous-requête interne qui effectue cette vérification - à
607             utiliser avec précautions car les performances du serveur
608             peuvent s'en trouver affectées !</li>
609
610             <li>'<strong>-H</strong>' (est un lien symbolique, selon la
611             convention bash)<br />
612             Voir <strong>-l</strong>.</li>
613
614             <li>'<strong>-l</strong>' (est un lien symbolique)<br />
615             Considère la <em>chaîne de test</em> comme un chemin et
616             vérifie son existence et si elle est un lien symbolique. On
617             peut aussi utiliser la convention bash <strong>-L</strong>
618             ou <strong>-h</strong> lorsqu'il y a risque de confusion
619             avec les tests <strong>-lt</strong> ou <strong>-le</strong>.</li>
620
621             <li>'<strong>-L</strong>' (est un lien symbolique, selon la
622             convention bash)<br />
623             Voir <strong>-l</strong>.</li>
624
625             <li>'<strong>-s</strong>' (est un fichier régulier d'une
626             certaine taille)<br />
627             Considère la <em>chaîne de test</em> comme un chemin et
628             vérifie son existence et si elle est un fichier régulier
629             d'une taille supérieure à zéro.</li>
630
631             <li>'<strong>-U</strong>' (test de l'existence d'une
632             <strong>U</strong>RL via une sous-requête)<br />
633             Vérifie si <em>chaîne de test</em> est une URL valide,
634             accessible à travers tous les contrôles d'accès du serveur
635             actuellement configurés pour ce chemin. C'est une
636             sous-requête interne qui effectue cette vérification - à
637             utiliser avec précautions car les performances du serveur
638             peuvent s'en trouver affectées !</li>
639
640           <li>'<strong>-x</strong>' (a l'attribut d'exécution positionné)<br />
641             Considère la <em>chaîne de test</em> comme un chemin et
642             vérifie son existence et si elle a son attribut d'exécution
643             positionné. Ce positionnement est déterminé en fonction de
644             l'OS sous-jacent.</li>
645
646             </ul>
647
648 <div class="note"><h3>Note :</h3>
649               Tous ces tests peuvent aussi être préfixés par un point
650               d'exclamation ('!') pour inverser leur signification.
651 </div>
652         </li>
653
654         <li>
655            <p>Si la <em>chaîne de test</em> contient la valeur spéciale
656            <code>expr</code>, la <em>chaîne de comparaison</em> sera
657            traitée en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>.</p>
658
659            <p>
660             Dans l'exemple ci-dessous, on utilise <code>-strmatch</code>
661             pour comparer le <code>REFERER</code> avec le nom d'hôte du
662             site afin de bloquer le hotlinking (référencement direct)
663             non désiré.
664            </p>
665
666            <div class="example"><p><code>
667            RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
668            RewriteRule ^/images - [F]
669            </code></p></div>
670         </li>
671
672         <li>Vous pouvez aussi définir certains drapeaux pour
673         l'<em>expression de comparaison</em> en ajoutant ces
674         <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
675         comme troisième argument de la directive
676         <code>RewriteCond</code>, où <em>drapeaux</em> est un
677         sous-ensemble séparé par des virgules des drapeaux suivants :
678
679       <ul>
680         <li>'<strong><code>nocase|NC</code></strong>'
681         (<strong>n</strong>o <strong>c</strong>ase)<br />
682         Rend le test insensible à la casse - il n'est pas fait de
683         distinction entre majuscules et minuscules, à la fois dans le
684         développement de <em>chaîne de test</em> et dans
685         <em>expression de comparaison</em>. Ce drapeau n'est pris en
686         compte que lors d'une comparaison entre <em>chaîne de test</em>
687         et <em>expression de comparaison</em>. Il ne l'est pas pour les
688         vérification par sous-requêtes ou sur le système de
689         fichiers.</li>
690
691         <li>
692           '<strong><code>ornext|OR</code></strong>'
693           (<strong>ou</strong> condition suivante)<br />
694           Permet de chaîner les conditions de règles avec un OU au
695           lieu du AND implicite. Exemple typique :
696
697 <div class="example"><pre>
698 RewriteCond %{REMOTE_HOST}  ^host1  [OR]
699 RewriteCond %{REMOTE_HOST}  ^host2  [OR]
700 RewriteCond %{REMOTE_HOST}  ^host3
701 RewriteRule ...règles concernant tous ces hôtes...
702 </pre></div>
703
704           Sans ce drapeau, les paires
705           condition/règle devraient être écrites trois fois.
706         </li>
707
708         <li>'<strong><code>novary|NV</code></strong>'
709         (<strong>n</strong>o <strong>v</strong>ary)<br />
710         Si la condition contient un en-tête HTTP, ce drapeau empêche
711         ce dernier d'être ajouté à l'en-tête Vary de la réponse. <br />
712         L'utilisation de ce drapeau peut provoquer une mise en cache
713         incorrecte de la réponse, si la représentation de cette réponse
714         varie avec la valeur de l'en-tête considéré. Ce drapeau ne
715         devrait donc être utilisé que si l'on maîtrise parfaitement le
716         fonctionnement de l'en-tête Vary.
717         </li>
718       </ul>
719       </li>
720      </ol>
721
722       <p><strong>Exemple :</strong></p>
723
724        <p>Pour réécrire la page d'accueil d'un site en fonction de
725        l'en-tête ``<code>User-Agent:</code>'' de la requête, vous
726        pouvez utiliser ce qui suit : </p>
727
728 <div class="example"><pre>
729 RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla
730 RewriteRule  ^/$                 /homepage.max.html  [L]
731
732 RewriteCond  %{HTTP_USER_AGENT}  ^Lynx
733 RewriteRule  ^/$                 /homepage.min.html  [L]
734
735 RewriteRule  ^/$                 /homepage.std.html  [L]
736 </pre></div>
737
738         <p>Explications : si vous utilisez un navigateur
739         (Netscape Navigator, Mozilla etc) qui s'identifie comme
740         'Mozilla', vous accèderez à la page d'accueil max (qui
741         peut contenir des frames, ou d'autres ressources
742         particulières).
743         Si vous utilisez le navigateur Lynx (qui est un navigateur
744         en mode texte), vous accèderez à une page d'accueil min
745         (qui peut être une version conçue pour une navigation simple
746         basée sur le texte).
747         Si aucune de ces conditions n'est satisfaite (vous utilisez tout
748         autre navigateur, ou votre navigateur s'identifie de manière non
749         standard), vous accèderez à la page d'accueil std
750         (standard).</p>
751
752
753 </div>
754 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
755 <div class="directive-section"><h2><a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a> <a name="rewriteengine" id="rewriteengine">Directive</a></h2>
756 <table class="directive">
757 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active ou désactive l'exécution du
758 moteur de réécriture</td></tr>
759 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteEngine on|off</code></td></tr>
760 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>RewriteEngine off</code></td></tr>
761 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
762 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
763 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
764 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
765 </table>
766
767       <p>La directive <code class="directive">RewriteEngine</code> active ou
768       désactive l'exécution du moteur de réécriture. Si sa valeur est
769       <code>off</code>, ce module n'exécutera aucun traitement et ne
770       mettra pas à jour les variables d'environnement
771       <code>SCRIPT_URx</code>.</p>
772
773       <p>Pour désactiver le module, il vaut mieux utiliser cette
774       directive que commenter toutes les directives <code class="directive"><a href="#rewriterule">RewriteRule</a></code> !</p>
775
776       <p>Notez que les  hôtes virtuels n'héritent pas des
777       configurations de réécriture. Ceci implique que vous devez
778       insérer une directive <code>RewriteEngine on</code> dans chaque
779       hôte virtuel pour lequel vous souhaitez utiliser des règles
780       de réécriture.</p>
781
782       <p>Les directives <code class="directive">RewriteMap</code> du type
783       <code>prg</code> ne sont pas prises en compte au cours de
784       l'initialisation du serveur si elle ont été définies dans un
785       contexte où la directive <code class="directive">RewriteEngine</code> n'a
786       pas été définie à <code>on</code>.</p>
787
788
789 </div>
790 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
791 <div class="directive-section"><h2><a name="RewriteMap" id="RewriteMap">RewriteMap</a> <a name="rewritemap" id="rewritemap">Directive</a></h2>
792 <table class="directive">
793 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une fonction de mise en correspondance pour la
794 recherche de mots-clés</td></tr>
795 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteMap <em>nom de la correspondance</em> <em>type de
796 correspondance</em>:<em>source de la correspondance</em>
797 </code></td></tr>
798 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
799 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
800 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
801 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Il est possible de choisir entre plusieurs types de
802 bases de données depuis la version 2.0.41 du serveur HTTP Apache</td></tr>
803 </table>
804       <p>La directive <code class="directive">RewriteMap</code> définit une
805       <em>Table de correspondance pour la réécriture</em> que les
806       fonctions de mise en correspondance
807       peuvent utiliser dans les chaînes de substitution des règles
808       pour insérer/substituer des champs en recherchant des mots-clés.
809       La source utilisée pour cette recherche peut être de plusieurs
810       types.</p>
811
812       <p><a id="mapfunc" name="mapfunc"><em>nom de la
813       correspondance</em></a> est le nom de la table de correspondance
814       et servira à spécifier une fonction de mise en correspondance
815       pour les chaînes de substitution d'une règle de réécriture selon
816       une des constructions suivantes :</p>
817
818       <p class="indent">
819         <strong><code>${</code> <em>nom de la
820       correspondance</em> <code>:</code>
821         <em>mot-clé</em> <code>}</code><br />
822          <code>${</code> <em>nom de la
823       correspondance</em> <code>:</code>
824         <em>mot-clé</em> <code>|</code> <em>valeur par défaut</em>
825         <code>}</code></strong>
826       </p>
827
828       <p>Lorsqu'une telle construction est rencontrée, la table de
829       correspondance <em>Nom de la correspondance</em> est consultée
830       et la clé <em>mot-clé</em> recherchée. Si la clé est trouvée, la
831       construction est remplacée par
832       la <em>valeur de remplacement</em>. Si la clé n'est pas trouvée,
833       elle est remplacée par la <em>valeur par défaut</em>, ou par une
834       chaîne vide si aucune <em>valeur par défaut</em> n'est
835       spécifiée. La valeur vide se comporte comme si la
836       clé était absente ; il est donc impossible de distinguer une
837       valeur vide d'une absence de clé.</p>
838
839       <p>Par exemple, vous pouvez définir une directive
840       <code class="directive">RewriteMap</code> comme suit </p>
841
842       <div class="example"><p><code>
843       RewriteMap map-exemple txt:/chemin/vers/fichier/map.txt
844       </code></p></div>
845
846       <p>Vous pourrez ensuite utiliser cette table dans une
847       directive <code class="directive">RewriteRule</code> comme suit :</p>
848
849       <div class="example"><p><code>
850       RewriteRule ^/ex/(.*) ${map-exemple:$1}
851       </code></p></div>
852
853       <p>Les combinaisons suivantes pour <em>type de correspondance</em>
854       et <em>source de la correspondance</em>
855       peuvent être utilisées :</p>
856
857 <dl>
858     <dt>txt</dt>
859         <dd>Un fichier texte contenant des paires clé-valeur séparées
860         par des espaces, une paire par ligne (<a href="../rewrite/rewritemap.html#txt">Détails ...</a>).</dd>
861
862     <dt>rnd</dt>
863         <dd>Sélection aléatoire d'une entrée depuis un fichier texte (<a href="../rewrite/rewritemap.html#rnd">Détails ...</a>).</dd>
864
865     <dt>dbm</dt>
866         <dd>Recherche une entrée dans un fichier dbm contenant des
867         paires nom-valeur. Le condensé hash est élaboré à partir d'un
868         format de fichier texte via l'utilitaire <code><a href="../programs/httxt2dbm.html">httxt2dbm</a></code> (<a href="../rewrite/rewritemap.html#dbm">Détails ...</a>).</dd>
869
870     <dt>int</dt>
871         <dd>Une des quatre fonctions internes disponibles que fournit
872         <code>RewriteMap</code>: toupper, tolower, escape ou unescape
873         (<a href="../rewrite/rewritemap.html#int">Détails ...</a>).</dd>
874
875     <dt>prg</dt>
876         <dd>Appelle un programme externe ou un script pour effectuer la
877         réécriture (<a href="../rewrite/rewritemap.html#int">Détails
878         ...</a>).</dd>
879
880     <dt>dbd or fastdbd</dt>
881         <dd>Une commande SQL SELECT à exécuter pour rechercher la cible
882         de réécriture (<a href="../rewrite/rewritemap.html#int">Détails
883         ...</a>).</dd>
884     </dl>
885
886 <p>Vous trouverez plus de détails et de nombreux exemples dans le <a href="../rewrite/rewritemap.html">RewriteMap HowTo</a>.</p>
887
888
889 </div>
890 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
891 <div class="directive-section"><h2><a name="RewriteOptions" id="RewriteOptions">RewriteOptions</a> <a name="rewriteoptions" id="rewriteoptions">Directive</a></h2>
892 <table class="directive">
893 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure certaines options spéciales
894 pour le moteur de réécriture</td></tr>
895 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteOptions <var>Options</var></code></td></tr>
896 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
897 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
898 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
899 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
900 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td><code>MaxRedirects</code> n'est plus disponible depuis
901 la version version 2.1</td></tr>
902 </table>
903
904       <p>La directive <code class="directive">RewriteOptions</code> définit
905       certaines options spéciales pour la configuration au niveau du
906       serveur ou du répertoire. La chaîne de caractères <em>Option</em>
907       ne peut actuellement prendre qu'une des valeurs suivantes :</p>
908
909       <dl>
910       <dt><code>Inherit</code></dt>
911       <dd>
912
913       <p>Ceci force la configuration locale à hériter de la
914       configuration du niveau supérieur. Dans le contexte des hôtes
915       virtuels, cela signifie que les correspondances, conditions et
916       règles du serveur principal sont héritées. Dans le contexte des
917       répertoires, cela signifie que les conditions et règles de la
918       configuration <code>.htaccess</code> ou les sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du répertoire
919       parent sont héritées. Les règles héritées sont virtuellement
920       copiées dans la section où cette directive est utilisée. Si elles
921       sont utilisées avec des règles locales, les règles héritées sont
922       placées après ces dernières. La place de cette directive - avant
923       ou après les règles locales - n'a aucune influence sur ce
924       comportement. Si des règles locales ont forcé l'arrêt de la
925       réécriture, les règles héritées ne seront pas traitées.</p>
926
927       <div class="warning">
928       Les règles héritées du niveau parent sont appliquées
929       <strong>after</strong> après les règles spécifiées dans le niveau
930       enfant.
931       </div>
932       </dd>
933
934       <dt><code>InheritBefore</code></dt>
935       <dd>
936       <p>Même effet que l'option <code>Inherit</code> ci-dessus, mais
937       les règles spécifiées dans le niveau parent s'appliquent
938       <strong>avant</strong> les règles spécifiées dans le niveau
939       enfant. Disponible depuis la version 2.3.10 du serveur HTTP
940       Apache.</p>
941       </dd>
942
943       <dt><code>AllowNoSlash</code></dt>
944       <dd>
945       <p>Par défaut, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ignore les URLs qui
946       correspondent à un répertoire sur disque, mais ne comportent pas
947       de slash final, afin que le module <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code>
948       redirige le client vers l'URL canonique avec un slash final.</p>
949       
950       <p>Lorsque la directive <code class="directive"><a href="../mod/mod_dir.html#directoryslash">DirectorySlash</a></code> est définie à off, il
951       est possible de spécifier l'option <code>AllowNoSlash</code> pour
952       s'assurer que les règles de réécriture ne soient plus ignorées.
953       Si on le souhaite, cette option permet de faire s'appliquer des
954       règles de réécriture qui correspondent à un répertoire sans slash
955       final au sein de fichiers .htaccess. Elle est disponible à
956       partir de la version 2.4.0 du serveur HTTP Apache.</p>
957       </dd>
958
959       </dl>
960
961 </div>
962 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
963 <div class="directive-section"><h2><a name="RewriteRule" id="RewriteRule">RewriteRule</a> <a name="rewriterule" id="rewriterule">Directive</a></h2>
964 <table class="directive">
965 <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>
966 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteRule
967       <em>Modèle</em> <em>Substitution</em> [<em>drapeaux</em>]</code></td></tr>
968 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
969 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
970 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
971 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
972 </table>
973       <p>La directive <code class="directive">RewriteRule</code> est le
974       véritable cheval de trait de la réécriture. La directive peut
975       apparaître plusieurs fois, chaque instance définissant une
976       règle de réécriture particulière. L'ordre dans lequel ces règles
977       sont définies est important - il s'agit de l'ordre dans lequel
978       les règles seront appliquées au cours du processus de
979       réécriture.</p>
980
981       <p><a id="patterns" name="patterns"><em>Modèle</em></a> est une
982       <a id="regexp" name="regexp">expression rationnelle</a>
983       compatible perl. Dans la première règle de réécriture,
984       l'expression est comparée au (%-decoded)
985       <a href="./directive-dict.html#Syntax">chemin de l'URL</a> (ou au
986       <a href="./directive-dict.html#Syntax">chemin fichier</a>, en
987       fonction du contexte) de la
988       requête. Les expressions suivantes sont comparées à la sortie de
989       la dernière règle de réécriture qui
990       correspondait.</p>
991
992 <div class="note"><h3><a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est comparé ?</a></h3>
993
994       <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
995       d'abord comparé à la portion de l'URL située entre le nom d'hôte
996       éventuellement accompagné du port, et la chaîne de paramètres (par
997       exemple "/app1/index.html").</p>
998
999       <p>Dans les contextes de répertoire <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> et htaccess, le
1000       <em>modèle</em> est tout d'abord comparé au chemin du <em>système
1001       de fichiers</em>, après suppression du préfixe ou chemin de base
1002       ayant conduit le serveur vers la règle <code class="directive">RewriteRule</code> (par
1003       exemple "app1/index.html" ou
1004       "index.html" selon l'endroit où les directives sont définies).</p>
1005
1006       <p>Si vous souhaitez faire une comparaison sur le nom
1007       d'hôte, le port, ou la chaîne de requête, utilisez une
1008       directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>
1009       comportant respectivement les variables
1010       <code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code>, ou
1011       <code>%{QUERY_STRING}</code>.</p>
1012 </div>
1013
1014 <div class="note"><h3>Réécritures dans un contexte de répertoire</h3>
1015 <ul>
1016 <li>L'utilisation du moteur de réécriture dans les
1017 fichiers <a href="../howto/htaccess.html">.htaccess</a> et les sections
1018 <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> est un peu plus
1019 complexe.</li>
1020
1021 <li>Pour activer le moteur de réécriture dans ces contextes, vous devez
1022 définir "<code>RewriteEngine On</code>" <strong>et</strong>
1023 "<code>Options FollowSymLinks</code>". Si l'administrateur a désactivé
1024 la possibilité de modifier l'option <code>FollowSymLinks</code> au
1025 niveau du répertoire d'un utilisateur, vous ne pouvez pas utiliser le
1026 moteur de réécriture. Cette restriction a été instaurée à des fins de
1027 sécurité.</li>
1028
1029 <li>Lorsqu'on utilise le moteur de réécriture dans un fichier
1030 <code>.htaccess</code>, le chemin de base du répertoire courant (qui est
1031 toujours le même pour ce même répertoire) est automatiquement
1032 <em>supprimé</em> au cours de la comparaison avec le modèle de la règle
1033 de réécriture, et automatiquement <em>ajouté</em> lorsqu'une
1034 substitution relative (ne débutant pas par un slash ou un nom de
1035 protocole) arrive à la fin d'un jeu de règles. Voir la directive
1036 <code class="directive"><a href="#rewritebase">RewriteBase</a></code> pour plus de
1037 détails à propos de l'ajout du préfixe après les substitutions
1038 relatives.</li>
1039
1040 <li>Si vous souhaitez effectuer une comparaison en prenant en compte
1041 l'intégralité du
1042 chemin de l'URL dans un contexte de répertoire (htaccess), vous devez
1043 utiliser la variable <code>%{REQUEST_URI}</code> dans la directive
1044 <code class="directive">RewriteCond</code>.</li>
1045
1046 <li>Le prefixe supprimé se termine toujours par un slash, ce qui
1047 signifie que la comparaison s'effectue avec une chaîne qui ne comporte
1048 <em>jamais</em> de slash de début. Ainsi, un <em>modèle</em> contenant
1049 <code>^/</code> ne correspondra jamais dans un contexte de répertoire.</li>
1050
1051 <li>Bien que les règles de réécriture soient permises du point de vue de
1052 la 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
1053 n'y sont à priori d'aucune utilité.</li>
1054 </ul>
1055 </div>
1056
1057         <p>Pour quelques conseils à propos des <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expressions rationnelles</a>, voir le
1058         document <a href="../rewrite/intro.html#regex">Introduction à
1059         mod_rewrite</a>.</p>
1060
1061       <p>Dans mod_rewrite, on peut aussi utiliser le caractère NON
1062       ('<code>!</code>') comme préfixe de modèle. Ceci vous permet
1063       d'inverser la signification d'un modèle, soit pour dire
1064       ``<em>si l'URL considérée ne correspond <strong>PAS</strong> à
1065       ce modèle</em>''. Le caractère NON peut donc être utilisé à
1066       titre exceptionnel, lorsqu'il est plus simple d'effectuer une
1067       comparaison avec le modèle inversé, ou dans la dernière règle
1068       par défaut.</p>
1069
1070 <div class="note"><h3>Note</h3>
1071 Si vous utilisez le caractère NON pour inverser la signification d'un
1072 modèle, vous ne pouvez pas inclure de parties génériques groupées dans
1073 le modèle. Ceci est dû au fait que, lorsque le modèle ne correspond
1074 pas (autrement dit, sa négation correspond), les groupes sont vides.
1075 Ainsi, si vous utilisez des modèles inversés, vous ne pouvez
1076 pas vous référer aux groupes par <code>$N</code> dans la chaîne de
1077 substitution !
1078 </div>
1079
1080       <p>Dans une règle de réécriture,
1081       <a id="rhs" name="rhs"><em>Substitution</em></a> est la chaîne
1082       de caractères qui remplace le chemin de l'URL original qui
1083       correspondait au <em>Modèle</em>. <em>Substitution</em> peut
1084       être :</p>
1085
1086       <dl>
1087
1088         <dt>un chemin du système de fichiers</dt>
1089
1090         <dd>Il indique alors la localisation dans le système de
1091         fichiers de la ressource qui doit être envoyée au
1092         client. Les substitutions ne sont traitées en tant que chemins du
1093         système de fichiers que si la règle est configurée dans un
1094         contexte de serveur (serveur virtuel), et si le premier
1095         composant du chemin dans la substitution existe dans le système
1096         de fichiers.</dd>
1097
1098         <dt>chemin d'URL</dt>
1099
1100         <dd>Un chemin relatif à la valeur de <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> vers la ressource qui
1101         doit être servie. Notez que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
1102         essaie de deviner si vous avez spécifié un chemin du système
1103         de fichiers ou un chemin d'URL en vérifiant si la première
1104         partie du chemin existe à la racine du système de fichiers.
1105         Par exemple, si vous avez spécifié comme chaîne de
1106         <em>Substitution</em> <code>/www/file.html</code>, cette
1107         dernière sera traitée comme un chemin d'URL <em>à moins</em>
1108         qu'un répertoire nommé <code>www</code> n'existe à la racine
1109         de votre système de fichiers, auquel cas la chaîne de
1110         substitution sera traitée comme un chemin du système de
1111         fichiers. Si vous désirez que d'autres directives de
1112         correspondance d'URL (comme la directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>) soient appliquées au
1113         chemin d'URL résultant, utilisez le drapeau <code>[PT]</code>
1114         comme décrit ci-dessous.</dd>
1115
1116         <dt>URL absolue</dt>
1117
1118         <dd>Si une URL absolue est spécifiée,
1119         <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> vérifie si le nom d'hôte
1120         correspond à celui de l'hôte local. Si c'est le cas, le
1121         protocole et le nom d'hôte sont supprimés, et ce qui reste est
1122         traité comme un chemin d'URL. Dans le cas contraire, une
1123         redirection externe vers l'URL indiquée est effectuée. Pour
1124         forcer une redirection externe vers l'hôte local, voir le
1125         drapeau <code>[R]</code> ci-dessous.</dd>
1126
1127         <dt><code>-</code> (tiret)</dt>
1128
1129         <dd>Un tiret indique qu'aucune substitution ne doit être
1130         effectuée (le chemin considéré est transmis sans changement).
1131         Ceci est utile quand un drapeau doit être appliqué sans
1132         modifier le chemin (voir ci-dessous).</dd>
1133
1134       </dl>
1135
1136       <p>En plus du texte, la chaîne <em>Substition</em> peut
1137       comporter :</p>
1138
1139       <ol>
1140         <li>des références arrières (<code>$N</code>) vers le modèle
1141         d'une directive RewriteRule</li>
1142
1143         <li>des références arrières (<code>%N</code>) vers le dernier
1144         modèle d'une directive RewriteCond qui correspondait</li>
1145
1146         <li>des variables du serveur comme dans les chaînes de test de
1147         condition d'une règle (<code>%{VARNAME}</code>)</li>
1148
1149         <li>des appels de
1150         <a href="#mapfunc">fonctions de comparaison</a>
1151         (<code>${nom correspondance:clé|défaut}</code>)</li>
1152       </ol>
1153
1154       <p>Les références arrières sont des identificateurs de la forme
1155       <code>$</code><strong>N</strong> (<strong>N</strong>=0..9), qui
1156       seront remplacés par le contenu du <strong>N</strong>ème groupe
1157       du <em>Modèle</em> qui correspondait. Les variables du serveur
1158       sont les mêmes que dans la <em>Chaîne de test</em> d'une
1159       directive <code>RewriteCond</code>. Les fonctions de comparaison
1160       sont issues de la directive <code>RewriteMap</code> dans la
1161       section de laquelle elles sont décrites. Ces trois types de
1162       variables sont évaluées dans l'ordre ci-dessus.</p>
1163
1164        <p>Chaque règle de réécriture s'applique au résultat de la règle
1165        précédente, selon l'ordre dans lequel elles ont été définies dans
1166        le fichier de configuration. Le chemin de l'URL ou du système de fichier (voir
1167        ci-dessus <a href="#what_is_matched">Qu'est-ce qui est
1168        comparé ?</a>) est <strong>intégralement
1169       remplacée</strong> par la chaîne de <em>Substitution</em> et le
1170       processus de réécriture se poursuit jusqu'à ce que toutes les
1171       règles aient été appliquées, ou qu'il soit explicitement stoppé
1172       par un drapeau <a href="../rewrite/flags.html#flag_l"><code><strong>L</strong></code></a>,
1173       ou par un autre drapeau qui implique un arrêt immédiat, comme
1174       <code><strong>END</strong></code> ou
1175       <code><strong>F</strong></code>.</p>
1176
1177      <div class="note"><h3>Modifier la chaîne de requête</h3>
1178       <p>Par défaut, la chaîne de requête est transmise sans
1179       modification. Vous pouvez cependant créer dans la chaîne de
1180       substitution des URLs dont une partie constitue une chaîne de
1181       requête. Pour cela, ajoutez simplement un point d'interrogation
1182       dans la chaîne de substitution pour indiquer que le texte qui
1183       suit doit être réinjecté dans la chaîne de requête. Pour
1184       supprimer une chaîne de requête, terminez simplement la chaîne de
1185       substitution par un point d'interrogation. Pour combiner les
1186       nouvelles chaînes de requête avec les anciennes, utilisez le
1187       drapeau <code>[QSA]</code>.</p>
1188      </div>
1189
1190
1191       <p>En outre, vous pouvez spécifier des <a name="rewriteflags" id="rewriteflags">actions</a> spéciales à effectuer en ajoutant
1192       des
1193       <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
1194       comme troisième argument de la directive
1195       <code>RewriteRule</code>. Séparés par des virgules au sein d'une
1196       liste encadrée par des crochets, les <em>drapeaux</em> peuvent
1197       être choisis dans la table suivante. Vous trouverez plus de
1198       détails, et des exemples pour chaque drapeau dans le <a href="../rewrite/flags.html">document à propos des drapeaux de
1199       réécriture.</a></p>
1200
1201       <table class="bordered">
1202     <tr><th>Drapeaux et syntaxe</th>
1203         <th>Fonction</th>
1204     </tr>
1205     <tr>
1206         <td>B</td>
1207         <td>Echappe les caractères non-alphanumériques <em>avant</em>
1208         d'appliquer la transformation. <em><a href="../rewrite/flags.html#flag_b">détails ...</a></em></td>
1209     </tr>
1210     <tr>
1211         <td>chain|C</td>
1212         <td>La règle est chaînée avec la règle suivante. Si la règle
1213         échoue, la ou les règles avec lesquelles elle est est chaînée
1214         seront sautées. <em><a href="../rewrite/flags.html#flag_c">détails ...</a></em></td>
1215     </tr>
1216     <tr>
1217         <td>cookie|CO=<em>NAME</em>:<em>VAL</em></td>
1218         <td>Définit un cookie au niveau du navigateur client. La syntaxe
1219         complète est :
1220         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>
1221         <em><a href="../rewrite/flags.html#flag_co">détails ...</a></em>
1222         </td>
1223     </tr>
1224     <tr>
1225         <td>discardpath|DPI</td>
1226         <td>Supprime la partie PATH_INFO de l'URI réécrit. <em><a href="../rewrite/flags.html#flag_dpi">détails
1227         ...</a></em></td>
1228     </tr>
1229     <tr>
1230         <td>env|E=[!]<em>VAR</em>[:<em>VAL</em>]</td>
1231         <td>Définit la variable d'environnement <em>VAR</em> (à la valeur
1232         <em>VAL</em> si elle est fournie). La variante !<em>VAR</em>
1233         annule la définition de la variable <em>VAR</em>.<em><a href="../rewrite/flags.html#flag_e">détails ...</a></em></td>
1234     </tr>
1235     <tr>
1236         <td>forbidden|F</td>
1237         <td>Renvoie une réponse 403 FORBIDDEN au navigateur client.
1238         <em><a href="../rewrite/flags.html#flag_f">détails ...</a></em></td>
1239     </tr>
1240     <tr>
1241         <td>gone|G</td>
1242         <td>Renvoie un message d'erreur 410 GONE au navigateur client. <em><a href="../rewrite/flags.html#flag_g">détails ...</a></em></td>
1243     </tr>
1244     <tr>
1245         <td>Handler|H=<em>Gestionnaire de contenu</em></td>
1246         <td>L'URI résultant est envoyé au <em>Gestionnaire de
1247         contenu</em> pour traitement. <em><a href="../rewrite/flags.html#flag_h">détails ...</a></em></td>
1248     </tr>
1249     <tr>
1250         <td>last|L</td>
1251         <td>Arrête le processus de réécriture immédiatement et n'applique
1252         plus aucune règle. Prêtez une attention particulière aux mises
1253         en garde concernant les contextes de niveau répertoire et
1254         .htaccess (voir aussi le drapeau END). <em><a href="../rewrite/flags.html#flag_l">détails ...</a></em></td>
1255     </tr>
1256     <tr>
1257         <td>next|N</td>
1258         <td>Réexécute le processus de réécriture à partir de la première
1259         règle, en utilisant le résultat du jeu de règles, sous réserve
1260         qu'il y ait un point de départ. <em><a href="../rewrite/flags.html#flag_n">détails
1261         ...</a></em></td>
1262     </tr>
1263     <tr>
1264         <td>nocase|NC</td>
1265         <td>Rend la comparaison entre modèles insensible à la casse.
1266         <em><a href="../rewrite/flags.html#flag_nc">détails ...</a></em></td>
1267     </tr>
1268     <tr>
1269         <td>noescape|NE</td>
1270         <td>Empêche mod_rewrite d'effectuer un échappement hexadécimal
1271         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>
1272     </tr>
1273     <tr>
1274         <td>nosubreq|NS</td>
1275         <td>La règle est sautée si la requête courante est une
1276         sous-requête interne. <em><a href="../rewrite/flags.html#flag_ns">détails ...</a></em></td>
1277     </tr>
1278     <tr>
1279         <td>proxy|P</td>
1280         <td>Force l'envoi en interne de l'URL de substitution en tant
1281         que requête mandataire. <em><a href="../rewrite/flags.html#flag_p">détails
1282         ...</a></em></td>
1283     </tr>
1284     <tr>
1285         <td>passthrough|PT</td>
1286         <td>L'URI résultant est repassé au moteur de mise en
1287         correspondance des URLs pour y être traité par d'autres
1288         traducteurs URI-vers-nom de fichier, comme <code>Alias</code> ou
1289         <code>Redirect</code>. <em><a href="../rewrite/flags.html#flag_pt">détails ...</a></em></td>
1290     </tr>
1291     <tr>
1292         <td>qsappend|QSA</td>
1293         <td>Ajoute toute chaîne de paramètres présente dans l'URL de la
1294         requête originale à toute chaîne de paramètres créée dans la
1295         cible de réécriture. <em><a href="../rewrite/flags.html#flag_qsa">détails ...</a></em></td>
1296     </tr>
1297     <tr>
1298         <td>qsdiscard|QSD</td>
1299         <td>Supprime toute chaîne de paramètres de l'URI entrant. <em><a href="../rewrite/flags.html#flag_qsd">détails
1300         ...</a></em></td>
1301     </tr>
1302     <tr>
1303         <td>redirect|R[=<em>code</em>]</td>
1304         <td>Force une redirection externe, avec un code de statut HTTP
1305         optionnel. <em><a href="../rewrite/flags.html#flag_r">détails ...</a></em>
1306         </td>
1307     </tr>
1308     <tr>
1309         <td>END</td>
1310         <td>Arrête le processus de réécriture immédiatement et
1311         n'applique plus aucune règle. Empêche aussi l'exécution
1312         ultérieure de règles de réécriture dans des contextes de
1313         répertoire et des fichiers .htaccess (disponible depuis la
1314         version 2.3.9) <em><a href="../rewrite/flags.html#flag_l">détails ...</a></em></td>
1315     </tr>
1316     <tr>
1317         <td>skip|S=<em>nombre</em></td>
1318         <td>Si la règle courante s'applique, le moteur de réécriture
1319         doit sauter les <em>nombre</em> règles suivantes. <em><a href="../rewrite/flags.html#flag_s">détails ...</a></em></td>
1320     </tr>
1321     <tr>
1322         <td>type|T=<em>MIME-type</em></td>
1323         <td>Force l'attribution du <a class="glossarylink" href="../glossary.html#type-mime" title="voir glossaire">Type-MIME</a>
1324         spécifié au fichier cible. <em><a href="../rewrite/flags.html#flag_t">détails ...</a></em></td>
1325     </tr>
1326     </table>
1327
1328 <div class="note"><h3>Développement du répertoire home</h3>
1329 <p> Quand la chaîne de substitution commence par quelque chose comme
1330 "/~user" (de manière explicite ou par références arrières), mod_rewrite
1331 développe le répertoire home sans tenir compte de la présence ou de la
1332 configuration du module <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>.</p>
1333
1334 <p> Ce développement n'est pas effectué si le drapeau <em>PT</em> est
1335 utilisé dans la directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code></p>
1336 </div>
1337
1338      <p>Voici toutes les combinaisons de substitution et leurs
1339      significations :</p>
1340
1341       <p><strong>Dans la configuration au niveau du serveur principal
1342       (<code>httpd.conf</code>)<br />
1343        pour la requête ``<code>GET
1344       /chemin/infochemin</code>'':</strong><br />
1345       </p>
1346
1347 <table class="bordered">
1348 <tr>
1349 <th>Règle</th>
1350 <th>Résultat de la substitution</th>
1351 </tr>
1352
1353 <tr>
1354 <td>^/un_chemin(.*) autre_chemin$1</td>
1355 <td>invalide, non supporté</td>
1356 </tr>
1357
1358 <tr>
1359 <td>^/un_chemin(.*) autre_chemin$1  [R]</td>
1360 <td>invalide, non supporté</td>
1361 </tr>
1362
1363 <tr>
1364 <td>^/un_chemin(.*) autre_chemin$1  [P]</td>
1365 <td>invalide, non supporté</td>
1366 </tr>
1367
1368 <tr>
1369 <td>^/un_chemin(.*) /autre_chemin$1</td>
1370 <td>/autre_chemin/info_chemin</td>
1371 </tr>
1372
1373 <tr>
1374 <td>^/un_chemin(.*) /autre_chemin$1 [R]</td>
1375 <td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
1376 </tr>
1377
1378 <tr>
1379 <td>^/un_chemin(.*) /autre_chemin$1 [P]</td>
1380 <td>sans objet, non supporté</td>
1381 </tr>
1382
1383 <tr>
1384 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1</td>
1385 <td>/autre_chemin/info_chemin</td>
1386 </tr>
1387
1388 <tr>
1389 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [R]</td>
1390 <td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
1391 </tr>
1392
1393 <tr>
1394 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [P]</td>
1395 <td>sans objet, non supporté</td>
1396 </tr>
1397
1398 <tr>
1399 <td>^/un_chemin(.*) http://autre_hote/autre_chemin$1</td>
1400 <td>http://autre_hote/autre_chemin/info_chemin via une redirection externe</td>
1401 </tr>
1402
1403 <tr>
1404 <td>^/un_chemin(.*) http://autre_hote/autre_chemin$1 [R]</td>
1405 <td>http://autre_hote/autre_chemin/info_chemin (le drapeau [R] est
1406 redondant)</td>
1407 </tr>
1408
1409 <tr>
1410 <td>^/somepath(.*) http://otherhost/otherpath$1 [P]</td>
1411 <td>http://otherhost/otherpath/pathinfo via internal proxy</td>
1412 </tr>
1413 </table>
1414
1415       <p><strong>Dans une configuration de niveau répertoire pour
1416       <code>/chemin</code><br />
1417        (<code>/chemin/physique/vers/chemin/.htacccess</code>, avec
1418       <code>RewriteBase /chemin</code>)<br />
1419        pour la requête ``<code>GET
1420       /chemin/chemin-local/infochemin</code>'':</strong><br />
1421      </p>
1422
1423 <table class="bordered">
1424
1425 <tr>
1426 <th>Règle</th>
1427 <th>Résultat de la substitution</th>
1428 </tr>
1429
1430 <tr>
1431 <td>^chemin-local(.*) autre-chemin$1</td>
1432 <td>/chemin/autre-chemin/infochemin</td>
1433 </tr>
1434
1435 <tr>
1436 <td>^chemin-local(.*) autre-chemin$1  [R]</td>
1437 <td>http://cet-hôte/chemin/autre-chemin/infochemin via redirection
1438 externe</td>
1439 </tr>
1440
1441 <tr>
1442 <td>^chemin-local(.*) autre-chemin$1  [P]</td>
1443 <td>n'a pas lieu d'être, non supporté</td>
1444 </tr>
1445
1446 <tr>
1447 <td>^chemin-local(.*) /autre-chemin$1</td>
1448 <td>/autre-chemin/infochemin</td>
1449 </tr>
1450
1451 <tr>
1452 <td>^chemin-local(.*) /autre-chemin$1 [R]</td>
1453 <td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
1454 </tr>
1455
1456 <tr>
1457 <td>^chemin-local(.*) /autre-chemin$1 [P]</td>
1458 <td>n'a pas lieu d'être, non supporté</td>
1459 </tr>
1460
1461 <tr>
1462 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1</td>
1463 <td>/autre-chemin/infochemin</td>
1464 </tr>
1465
1466 <tr>
1467 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [R]</td>
1468 <td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
1469 </tr>
1470
1471 <tr>
1472 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [P]</td>
1473 <td>n'a pas lieu d'être, non supporté</td>
1474 </tr>
1475
1476 <tr>
1477 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1</td>
1478 <td>http://autre hôte/autre-chemin/infochemin via redirection externe</td>
1479 </tr>
1480
1481 <tr>
1482 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [R]</td>
1483 <td>http://autre hôte/autre-chemin/infochemin via redirection externe
1484 (le drapeau [R] est redondant)</td>
1485 </tr>
1486
1487 <tr>
1488 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [P]</td>
1489 <td>http://autre hôte/autre-chemin/infochemin via un mandataire interne</td>
1490 </tr>
1491
1492 </table>
1493
1494   
1495 </div>
1496 </div>
1497 <div class="bottomlang">
1498 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
1499 <a href="../fr/mod/mod_rewrite.html" title="Français">&nbsp;fr&nbsp;</a></p>
1500 </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>This section is experimental!</strong><br />Comments placed here should not be expected 
1501 to last beyond the testing phase of this system, nor do we in any way guarantee that we'll read them.</div><div id="disqus_thread" /><script type="text/javascript"><!--//--><![CDATA[//><!--
1502 var lang = 'fr';
1503 var disqus_shortname = 'httpd';
1504 var disqus_identifier = window.location.href.replace(/(current|trunk)/, "2.4").replace(/\/[a-z]{2}\//, "/").replace(window.location.protocol, "http:") + '.' + lang;
1505 if (disqus_identifier.indexOf("httpd.apache.org") != -1) {
1506     (function() {
1507                 var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
1508                 dsq.src = window.location.protocol + '//' + disqus_shortname + '.disqus.com/embed.js';
1509             (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
1510         })();
1511 } else {
1512     var text = document.createTextNode("Comments have been disabled for offline viewing.");
1513     document.getElementById('disqus_thread').appendChild(text);
1514 }
1515 //--><!]]></script></div><div id="footer">
1516 <p class="apache">Copyright 2012 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
1517 <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[//><!--
1518 if (typeof(prettyPrint) !== undefined) {
1519     prettyPrint();
1520 }
1521 //--><!]]></script>
1522 </body></html>