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