]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_rewrite.html.fr
rebuild
[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/quickreference.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 <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
31 règles permettant de réécrire les URLs des requêtes
32 à la volée</td></tr>
33 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
34 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>rewrite_module</td></tr>
35 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_rewrite.c</td></tr></table>
36 <h3>Sommaire</h3>
37
38       <p>Le module <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> utilise un moteur de
39       réécriture à base de règles, basé sur un interpréteur
40       d'expressions rationnelles PCRE, pour réécrire les URLs à la volée. Par
41       défaut, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> met en correspondance une URL
42       avec le système de fichiers. Cependant, on peut aussi l'utiliser
43       pour rediriger une URL vers une autre URL, ou pour invoquer une
44       requête interne à destination du mandataire.</p>
45       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> fournit une méthode souple et
46       puissante pour manipuler les URLs en utilisant un nombre illimité
47       de règles. Chaque règle peut être associée à un nombre illimité de
48       conditions, afin de vous permettre de réécrire les URLs en
49       fonction de variables du serveur, de variables d'environnement,
50       d'en-têtes HTTP, ou de repères temporels.</p>
51       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> agit sur la totalité de l'URL, y
52       compris la partie chemin. Une règle de réécriture peut être
53       invoquée dans <code>httpd.conf</code> ou dans un fichier
54       <code>.htaccess</code>. Le chemin généré par une règle de
55       réécriture peut inclure une chaîne de paramètres, ou peut renvoyer
56       vers un traitement secondaire interne, une redirection vers une
57       requête externe ou vers le mandataire interne.</p>
58
59       <p>Vous trouverez d'avantage de détails, discussions et exemples
60       dans la
61       <a href="../rewrite/">documentation détaillée
62       sur mod_rewrite</a>.</p>
63 </div>
64 <div id="quickview"><h3 class="directives">Directives</h3>
65 <ul id="toc">
66 <li><img alt="" src="../images/down.gif" /> <a href="#rewritebase">RewriteBase</a></li>
67 <li><img alt="" src="../images/down.gif" /> <a href="#rewritecond">RewriteCond</a></li>
68 <li><img alt="" src="../images/down.gif" /> <a href="#rewriteengine">RewriteEngine</a></li>
69 <li><img alt="" src="../images/down.gif" /> <a href="#rewritemap">RewriteMap</a></li>
70 <li><img alt="" src="../images/down.gif" /> <a href="#rewriteoptions">RewriteOptions</a></li>
71 <li><img alt="" src="../images/down.gif" /> <a href="#rewriterule">RewriteRule</a></li>
72 </ul>
73 <h3>Sujets</h3>
74 <ul id="topics">
75 <li><img alt="" src="../images/down.gif" /> <a href="#logging">Journalisation</a></li>
76 </ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
77 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
78 <div class="section">
79 <h2><a name="logging" id="logging">Journalisation</a></h2>
80
81     <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> offre une journalisation détaillée
82     de ses actions aux niveaux de journalisation <code>trace1</code> à
83     <code>trace8</code>. Le niveau de journalisation peut être défini de
84     manière spécifique à <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> via la directive
85     <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> : jusqu'au niveau
86     <code>debug</code> aucune action n'est journalisée, alors qu'elles
87     le sont pratiquement toutes au niveau <code>trace8</code>.</p>
88
89     <div class="note">
90       L'utilisation d'un niveau de journalisation élevé pour
91       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> va ralentir votre serveur HTTP Apache
92       de manière dramatique ! N'utilisez un niveau de journalisation
93       supérieur à <code>trace2</code> qu'à des fins de débogage !
94     </div>
95
96     <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">
97       LogLevel alert rewrite:trace3
98       </pre>
99 </div>
100
101     <div class="note"><h3>RewriteLog</h3>
102       <p>Ceux qui sont familiers avec les versions précédentes de
103       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> vont probablement rechercher en vain les
104       directives <code>RewriteLog</code> et
105       <code>RewriteLogLevel</code>. Elles ont été en effet remplacées
106       par une configuration de la journalisation par module, comme
107       mentionné plus haut.
108       </p>
109
110       <p>Pour extraire les traces spécifiques à
111       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, affichez le fichier journal en
112       redirigeant la sortie vers grep :</p>
113     <div class="example"><p><code>
114     tail -f error_log|fgrep '[rewrite:'
115     </code></p></div>
116     </div>
117
118 </div>
119 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
120 <div class="directive-section"><h2><a name="RewriteBase" id="RewriteBase">RewriteBase</a> <a name="rewritebase" id="rewritebase">Directive</a></h2>
121 <table class="directive">
122 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit l'URL de base pour les réécritures au niveau
123 répertoire</td></tr>
124 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteBase <em>chemin URL</em></code></td></tr>
125 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>Pas de valeur par défaut</code></td></tr>
126 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
127 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
128 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
129 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
130 </table>
131       <p>La directive <code class="directive">RewriteBase</code> permet de
132       spécifier le préfixe d'URL à utiliser dans un contexte de
133       répertoire (htaccess) pour les directives
134       <code class="directive">RewriteRule</code> qui réécrivent vers un chemin
135       relatif.</p>
136       <p>Cette directive est <em>obligatoire</em> si vous utilisez un
137       chemin relatif dans une substitution, et dans un contexte de
138       répertoire (htaccess), sauf si au moins une de ces conditions est
139       vérifiée :</p>
140       <ul>
141           <li>La requête initiale, ainsi que la substitution, sont dans
142           la <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> (c'est à
143           dire que pour y accéder, il n'est pas nécessaire d'utiliser
144           une directive telle qu'<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>).</li>
145           <li>Le chemin du système de fichiers vers le répertoire
146           contenant la <code class="directive">RewriteRule</code>, suffixé par
147           la substitution relative est aussi valide en tant qu'URL sur
148           le serveur (ce qui est rare).</li>
149       </ul>
150
151 <p>Dans l'exemple ci-dessous, la directive
152 <code class="directive">RewriteBase</code> est nécessaire afin d'éviter une
153 réécriture en http://example.com/opt/myapp-1.2.3/welcome.html car la
154 ressource n'était pas relative à la racine des documents. Cette erreur
155 de configuration aurait conduit le serveur à rechercher un répertoire
156 "opt" à la racine des documents.</p>
157
158 <pre class="prettyprint lang-config">
159 DocumentRoot /var/www/example.com
160 Alias /myapp /opt/myapp-1.2.3
161 &lt;Directory /opt/myapp-1.2.3&gt;
162  RewriteEngine On
163     RewriteBase /myapp/
164     RewriteRule ^index\.html$  welcome.html
165 &lt;/Directory&gt;
166 </pre>
167
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>. En fonction de la
355                   valeur de la directive <code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code>, le serveur
356                   peut n'utiliser que certains éléments de tête du
357                   <code>REQUEST_URI</code> pour déterminer à quel
358                   fichier correspond la requête.</dd>
359
360                   <dt><code>HTTPS</code></dt>
361
362                   <dd>Contient le texte "on" si la connexion
363                   utilise SSL/TLS, "off" dans le cas contraire
364                   (Cette variable peut être utilisée sans problème, que
365                   <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non.</dd>
366
367                   <dt><code>REQUEST_SCHEME</code></dt>
368
369                   <dd>Contient le protocole de la requête (en général
370                   "http" ou "https"). La valeur peut être modifiée par
371                   la directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>.</dd>
372
373                 </dl>
374 </div>
375         </li>
376       </ul>
377
378       <p>Si la <em>chaîne de test</em> contient la valeur spéciale
379       <code>expr</code>, <em>expression de comparaison</em> sera traité
380       en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>. Si des en-têtes HTTP sont
381       référencés dans l'expression rationnelle, et si le drapeau
382       <code>novary</code> n'est pas activé, ils seront ajoutés à
383       l'en-tête Vary.</p>
384
385       <p>Autres points à connaître ::</p>
386       <ol>
387         <li>
388         <p>Les variables <code>SCRIPT_FILENAME</code> et
389         <code>REQUEST_FILENAME</code> contiennent toutes deux la valeur
390         du champ <code>filename</code> de la
391         structure interne <code>request_rec</code>du serveur HTTP Apache.
392         Le premier nom correspond au nom de variable bien connu CGI,
393         alors que le second est l'équivalent de REQUEST_URI (qui
394         contient la valeur du champ <code>uri</code> de
395         <code>request_rec</code>).</p>
396         <p>Si une substitution intervient et si la réécriture se
397         poursuit, la valeur des deux variables sera mise à jour en
398         conséquence.</p>
399         <p>Dans le contexte du serveur principal (c'est à dire avant que
400         la requête ne soit mise en correspondance avec le système de
401         fichiers), SCRIPT_FILENAME et REQUEST_FILENAME  ne peuvent pas
402         contenir le chemin entier dans le système de fichiers local car
403         ce chemin b'est pas connu à ce stade du traitement. Dans ce cas,
404         les deux variables contiendront la valeur de REQUEST_URI. Pour
405         obtenir le chemin complet de la requête dans le système de
406         fichiers local dans le contexte du serveur principal, utilisez une
407         référence avant à base d'URL
408         <code>%{LA-U:REQUEST_FILENAME}</code> pour déterminer la valeur
409         finale de REQUEST_FILENAME.</p></li>
410
411
412         <li>
413         <code>%{ENV:<em>variable</em>}</code>, où <em>variable</em> peut
414         correspondre à une variable d'environnement quelconque.</li>
415         <li>
416         <code>%{ENV:variable}</code> est aussi disponible, où
417         <em>variable</em> peut correspondre à toute variable
418         d'environnement. Peut être consulté via des structures internes
419         d'Apache httpd et (si on ne les trouve pas ici) via la fonction
420         <code>getenv()</code> à partir du processus du serveur Apache
421         httpd.</li>
422
423         <li>Que <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non, on peut
424         utiliser <code>%{SSL:variable}</code>, où <em>variable</em>
425         peut être remplacé par le nom d'une
426         <a href="mod_ssl.html#envvars">variable
427         d'environnement SSL</a> . Si <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> n'est pas
428         chargé, cette variable contiendra toujours une chaîne vide.
429         Exemple : <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> pourra
430         contenir la valeur <code>128</code>.</li>
431
432         <li>
433         On peut utiliser <code>%{HTTP:en-tête}</code>, où
434         <em>en-tête</em> peut correspondre à tout nom d'en-tête MIME
435         HTTP, pour extraire la valeur d'un en-tête envoyé dans la
436         requête HTTP. Par exemple, <code>%{HTTP:Proxy-Connection}</code>
437         contiendra la valeur de l'en-tête HTTP
438         "<code>Proxy-Connection:</code>".
439         Si on utilise un en-tête HTTP
440         dans une condition, et si cette condition est évaluée à
441         <code>vrai</code> pour la requête, cet en-tête sera ajouté à l'en-tête Vary de
442         la réponse. Il ne le sera pas si la condition est évaluée à
443         <code>faux</code>. L'ajout de l'en-tête HTTP à l'en-tête Vary
444         est nécessaire à une mise en cache appropriée.
445         <p>Il faut garder à l'esprit que les conditions suivent une
446         logique de cout-circuit si le drapeau
447         '<strong><code>ornext|OR</code></strong>' est utilisé, et que de
448         ce fait, certaines d'entre elles ne seront pas évaluées.</p>
449         </li>
450
451         <li>A des fins de référence avant, on peut utiliser,
452         <a id="LA-U" name="LA-U"><code>%{LA-U:variable}</code></a>, qui
453         permet d'effectuer une sous-requête interne à base d'URL, afin
454         de déterminer la valeur finale de <em>variable</em>. Ceci permet
455         d'accéder à la valeur d'une variable pour la réécriture inconnue
456         à ce stade du traitement, mais qui sera définie au
457         cours d'une phase ultérieure.
458         <p>Par exemple, pour effectuer une réécriture dépendant de la
459         variable <code>REMOTE_USER</code> dans le contexte du serveur
460         principal (fichier <code>httpd.conf</code>), vous devez utiliser
461         <code>%{LA-U:REMOTE_USER}</code> - cette variable est définie
462         par la phase d'autorisation qui intervient <em>après</em> la
463         phase de traduction d'URL (pendant laquelle mod_rewrite opère).</p>
464         <p>Par contre, comme mod_rewrite implémente son contexte de
465         répertoire (fichier <code>.htaccess</code>) via la phase Fixup
466         de l'API, et comme la phase d'autorisation intervient
467         <em>avant</em> cette dernière, vous pouvez vous contenter
468         d'utiliser <code>%{REMOTE_USER}</code> dans ce contexte.</p></li>
469
470         <li>
471         <code>%{LA-F:variable}</code> peut être utilisée pour effectuer
472         une sous-requête interne (basée sur le nom de fichier), afin de
473         déterminer la valeur finale de <em>variable</em>. La plupart du
474         temps, elle est identique à LA-U (voir ci-dessus).</li>
475       </ol>
476
477
478       <p><em>expression de comparaison</em> est une expression
479       rationnelle qui est appliquée à l'instance actuelle de
480       <em>chaîne de test</em>. <em>chaîne de test</em> est d'abord
481       évaluée, puis comparée à
482       l'<em>expression de comparaison</em>.</p>
483
484       <p><em>expression de comparaison</em> est en général une
485       <em>expression rationnelle compatible perl</em>, mais vous
486       disposez des syntaxes supplémentaires suivantes pour effectuer
487       d'autres tests utiles sur <em>chaîne de test</em> :
488       </p>
489
490       <ol>
491         <li>Vous pouvez préfixer l'expression avec un caractère
492         '<code>!</code>' (point d'exclamation) pour indiquer une
493         expression de <strong>non</strong>-correspondance.</li>
494
495         <li>Vous pouvez effectuer des comparaisons lexicographiques de
496         chaînes :
497
498           <ul>
499             <li>'<strong>&lt;expression</strong>' (infé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 inférieure au sens
505             lexicographique à l'<em>expression</em>.</li>
506
507             <li>'<strong>&gt;expression</strong>' (supérieur au sens
508             lexicographique)<br />
509             Traite l'<em>expression</em> comme une chaîne de
510             caractères et la compare lexicographiquement à
511             <em>chaîne de test</em>. La condition est satisfaite si
512             <em>chaîne de test</em> est supérieure au sens
513             lexicographique à l'<em>expression</em>.</li>
514
515             <li>'<strong>=expression</strong>' (égal au sens
516             lexicographique)<br />
517             Traite l'<em>expression</em> comme une chaîne de
518             caractères et la compare lexicographiquement à
519             <em>chaîne de test</em>. La condition est satisfaite si
520             <em>chaîne de test</em> est égale au sens
521             lexicographique à l'<em>expression</em> (les deux chaînes
522             sont exactement identiques, caractère pour caractère). Si
523             <em>expression</em> est <code>""</code> (deux guillemets),
524             <em>chaîne de test</em> est comparée à la chaîne vide.</li>
525
526             <li>'<strong>&lt;=expression de comparaison</strong>' (inférieur ou égal à
527             au sens lexicographique)<br />
528             Considère l'<em>expression de comparaison</em> comme une
529             chaîne de caractères et la compare au sens lexicographique à
530             la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
531             précède lexicographiquement <em>expression de comparaison</em>, ou est
532             égale à <em>expression de comparaison</em> (les deux chaînes
533             sont identiques, caractère pour caractère).</li>
534
535             <li>'<strong>&gt;=expression de comparaison</strong>'
536             (supérieur ou égal à au sens lexicographique)<br />
537             Considère l'<em>expression de comparaison</em> comme une
538             chaîne de caractères et la compare au sens lexicographique à
539             la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
540             suit lexicographiquement <em>expression de comparaison</em>, ou est
541             égale à <em>expression de comparaison</em> (les deux chaînes
542             sont identiques, caractère pour caractère).</li>
543         </ul></li>
544
545         <li>
546           Vous pouvez effectuer des comparaisons d'entiers :
547           <ul>
548
549             <li>'<strong>-eq</strong>' (est numériquement é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 les deux expressions sont
553             numériquement égales.</li>
554
555             <li>'<strong>-ge</strong>' (est numériquement supérieur ou
556             égal à)<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 ou égale à <em>expression de comparaison</em>.</li>
562
563              <li>'<strong>-gt</strong>' (est numériquement supérieur à)<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             supérieure à <em>expression de comparaison</em>.</li>
569
570             <li>'<strong>-le</strong>' (est numériquement inférieur ou
571             égal à)<br />
572             La <em>chaîne de test</em> est considérée comme un entier,
573             et est comparée numériquement à l'<em>expression de
574             comparaison</em>. Vrai si <em>chaîne de test</em> est
575             numériquement
576             inférieure ou égale à <em>expression de comparaison</em>.
577             Attention à la confusion avec le drapeau <strong>-l</strong>
578             en utilisant la variante the <strong>-L</strong> ou
579             <strong>-h</strong>.</li>
580
581              <li>'<strong>-lt</strong>' (est numériquement inférieur à)<br />
582             La <em>chaîne de test</em> est considérée comme un entier,
583             et est comparée numériquement à l'<em>expression de
584             comparaison</em>. Vrai si <em>chaîne de test</em> est
585             numériquement
586             inférieure à <em>expression de comparaison</em>.
587             Attention à la confusion avec le drapeau <strong>-l</strong>
588             en utilisant la variante the <strong>-L</strong> ou
589             <strong>-h</strong>.</li>
590
591            </ul>
592         </li>
593
594         <li>Vous pouvez effectuer différents tests sur les attributs de
595         fichier :
596           <ul>
597
598             <li>'<strong>-d</strong>' (est un répertoire -
599             <strong>d</strong>irectory)<br />
600             Traite <em>chaîne de test</em> comme un chemin et vérifie
601             s'il existe ou pas, et s'il s'agit d'un répertoire.</li>
602
603             <li>'<strong>-f</strong>' (est un
604             <strong>f</strong>ichier régulier)<br />
605             Traite <em>chaîne de test</em> comme un chemin et vérifie
606             s'il existe ou pas, et s'il s'agit d'un fichier régulier.</li>
607
608             <li>'<strong>-F</strong>' (test de l'existence d'un fichier
609             via une sous-requête)<br />
610             Vérifie si <em>chaîne de test</em> est un fichier valide,
611             accessible à travers tous les contrôles d'accès du serveur
612             actuellement configurés pour ce chemin. C'est une
613             sous-requête interne qui effectue cette vérification - à
614             utiliser avec précautions car les performances du serveur
615             peuvent s'en trouver affectées !</li>
616
617             <li>'<strong>-H</strong>' (est un lien symbolique, selon la
618             convention bash)<br />
619             Voir <strong>-l</strong>.</li>
620
621             <li>'<strong>-l</strong>' (est un lien symbolique)<br />
622             Considère la <em>chaîne de test</em> comme un chemin et
623             vérifie son existence et si elle est un lien symbolique. On
624             peut aussi utiliser la convention bash <strong>-L</strong>
625             ou <strong>-h</strong> lorsqu'il y a risque de confusion
626             avec les tests <strong>-lt</strong> ou <strong>-le</strong>.</li>
627
628             <li>'<strong>-L</strong>' (est un lien symbolique, selon la
629             convention bash)<br />
630             Voir <strong>-l</strong>.</li>
631
632             <li>'<strong>-s</strong>' (est un fichier régulier d'une
633             certaine taille)<br />
634             Considère la <em>chaîne de test</em> comme un chemin et
635             vérifie son existence et si elle est un fichier régulier
636             d'une taille supérieure à zéro.</li>
637
638             <li>'<strong>-U</strong>' (test de l'existence d'une
639             <strong>U</strong>RL via une sous-requête)<br />
640             Vérifie si <em>chaîne de test</em> est une URL valide,
641             accessible à travers tous les contrôles d'accès du serveur
642             actuellement configurés pour ce chemin. C'est une
643             sous-requête interne qui effectue cette vérification - à
644             utiliser avec précautions car les performances du serveur
645             peuvent s'en trouver affectées !</li>
646
647           <li>'<strong>-x</strong>' (a l'attribut d'exécution positionné)<br />
648             Considère la <em>chaîne de test</em> comme un chemin et
649             vérifie son existence et si elle a son attribut d'exécution
650             positionné. Ce positionnement est déterminé en fonction de
651             l'OS sous-jacent.</li>
652
653             </ul>
654
655 <div class="note"><h3>Note :</h3>
656               Tous ces tests peuvent aussi être préfixés par un point
657               d'exclamation ('!') pour inverser leur signification.
658 </div>
659         </li>
660
661         <li>
662            <p>Si la <em>chaîne de test</em> contient la valeur spéciale
663            <code>expr</code>, la <em>chaîne de comparaison</em> sera
664            traitée en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>.</p>
665
666            <p>
667             Dans l'exemple ci-dessous, on utilise <code>-strmatch</code>
668             pour comparer le <code>REFERER</code> avec le nom d'hôte du
669             site afin de bloquer le hotlinking (référencement direct)
670             non désiré.
671            </p>
672
673            <pre class="prettyprint lang-config">
674            RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
675            RewriteRule ^/images - [F]
676            </pre>
677
678         </li>
679
680         <li>Vous pouvez aussi définir certains drapeaux pour
681         l'<em>expression de comparaison</em> en ajoutant ces
682         <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
683         comme troisième argument de la directive
684         <code>RewriteCond</code>, où <em>drapeaux</em> est un
685         sous-ensemble séparé par des virgules des drapeaux suivants :
686
687       <ul>
688         <li>'<strong><code>nocase|NC</code></strong>'
689         (<strong>n</strong>o <strong>c</strong>ase)<br />
690         Rend le test insensible à la casse - il n'est pas fait de
691         distinction entre majuscules et minuscules, à la fois dans le
692         développement de <em>chaîne de test</em> et dans
693         <em>expression de comparaison</em>. Ce drapeau n'est pris en
694         compte que lors d'une comparaison entre <em>chaîne de test</em>
695         et <em>expression de comparaison</em>. Il ne l'est pas pour les
696         vérification par sous-requêtes ou sur le système de
697         fichiers.</li>
698
699         <li>
700           '<strong><code>ornext|OR</code></strong>'
701           (<strong>ou</strong> condition suivante)<br />
702           Permet de chaîner les conditions de règles avec un OU au
703           lieu du AND implicite. Exemple typique :
704
705 <pre class="prettyprint lang-config">
706 RewriteCond %{REMOTE_HOST}  ^host1  [OR]
707 RewriteCond %{REMOTE_HOST}  ^host2  [OR]
708 RewriteCond %{REMOTE_HOST}  ^host3
709 RewriteRule ...règles concernant tous ces hôtes...
710 </pre>
711
712
713           Sans ce drapeau, les paires
714           condition/règle devraient être écrites trois fois.
715         </li>
716
717         <li>'<strong><code>novary|NV</code></strong>'
718         (<strong>n</strong>o <strong>v</strong>ary)<br />
719         Si la condition contient un en-tête HTTP, ce drapeau empêche
720         ce dernier d'être ajouté à l'en-tête Vary de la réponse. <br />
721         L'utilisation de ce drapeau peut provoquer une mise en cache
722         incorrecte de la réponse, si la représentation de cette réponse
723         varie avec la valeur de l'en-tête considéré. Ce drapeau ne
724         devrait donc être utilisé que si l'on maîtrise parfaitement le
725         fonctionnement de l'en-tête Vary.
726         </li>
727       </ul>
728       </li>
729      </ol>
730
731       <p><strong>Exemple :</strong></p>
732
733        <p>Pour réécrire la page d'accueil d'un site en fonction de
734        l'en-tête ``<code>User-Agent:</code>'' de la requête, vous
735        pouvez utiliser ce qui suit : </p>
736
737 <pre class="prettyprint lang-config">
738 RewriteCond  %{HTTP_USER_AGENT}  (iPhone|Blackberry|Android)
739 RewriteRule  ^/$                 /homepage.mobile.html  [L]
740
741 RewriteRule  ^/$                 /homepage.std.html  [L]
742 </pre>
743
744
745         <p>Explications : si vous utilisez un navigateur
746         qui s'identifie comme un
747         navigateur de plateforme mobile (notez que l'exemple est
748         incomplet car il existe de nombreuses autres plateformes
749         mobiles), c'est la version pour mobile de la page d'accueil qui
750         sera renvoyée. Dans le cas contraire, ce sera la page d'accueil
751         standard.</p>
752
753
754 </div>
755 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
756 <div class="directive-section"><h2><a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a> <a name="rewriteengine" id="rewriteengine">Directive</a></h2>
757 <table class="directive">
758 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active ou désactive l'exécution du
759 moteur de réécriture</td></tr>
760 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteEngine on|off</code></td></tr>
761 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>RewriteEngine off</code></td></tr>
762 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
763 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
764 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
765 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
766 </table>
767
768       <p>La directive <code class="directive">RewriteEngine</code> active ou
769       désactive l'exécution du moteur de réécriture. Si sa valeur est
770       <code>off</code>, ce module n'exécutera aucun traitement et ne
771       mettra pas à jour les variables d'environnement
772       <code>SCRIPT_URx</code>.</p>
773
774       <p>Plutôt que de commenter toutes les directives <code class="directive"><a href="#rewriterule">RewriteRule</a></code>, il est préférable
775       d'utiliser cette directive si l'on souhaite désactiver les
776       règles de réécriture dans un contexte particulier.</p>
777
778       <p>Notez que les  hôtes virtuels n'héritent pas des
779       configurations de réécriture. Ceci implique que vous devez
780       insérer une directive <code>RewriteEngine on</code> dans chaque
781       hôte virtuel pour lequel vous souhaitez utiliser des règles
782       de réécriture.</p>
783
784       <p>Les directives <code class="directive">RewriteMap</code> du type
785       <code>prg</code> ne sont pas prises en compte au cours de
786       l'initialisation du serveur si elle ont été définies dans un
787       contexte où la directive <code class="directive">RewriteEngine</code> n'a
788       pas été définie à <code>on</code>.</p>
789
790
791 </div>
792 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
793 <div class="directive-section"><h2><a name="RewriteMap" id="RewriteMap">RewriteMap</a> <a name="rewritemap" id="rewritemap">Directive</a></h2>
794 <table class="directive">
795 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une fonction de mise en correspondance pour la
796 recherche de mots-clés</td></tr>
797 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteMap <em>nom de la correspondance</em> <em>type de
798 correspondance</em>:<em>source de la correspondance</em>
799 </code></td></tr>
800 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
801 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
802 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</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       <pre class="prettyprint lang-config">
843       RewriteMap map-exemple txt:/chemin/vers/fichier/map.txt
844       </pre>
845
846
847       <p>Vous pourrez ensuite utiliser cette table dans une
848       directive <code class="directive">RewriteRule</code> comme suit :</p>
849
850       <pre class="prettyprint lang-config">
851       RewriteRule ^/ex/(.*) ${map-exemple:$1}
852       </pre>
853
854
855       <p>Les combinaisons suivantes pour <em>type de correspondance</em>
856       et <em>source de la correspondance</em>
857       peuvent être utilisées :</p>
858
859 <dl>
860     <dt>txt</dt>
861         <dd>Un fichier texte contenant des paires clé-valeur séparées
862         par des espaces, une paire par ligne (<a href="../rewrite/rewritemap.html#txt">Détails ...</a>).</dd>
863
864     <dt>rnd</dt>
865         <dd>Sélection aléatoire d'une entrée depuis un fichier texte (<a href="../rewrite/rewritemap.html#rnd">Détails ...</a>).</dd>
866
867     <dt>dbm</dt>
868         <dd>Recherche une entrée dans un fichier dbm contenant des
869         paires nom-valeur. Le condensé hash est élaboré à partir d'un
870         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>
871
872     <dt>int</dt>
873         <dd>Une des quatre fonctions internes disponibles que fournit
874         <code>RewriteMap</code>: toupper, tolower, escape ou unescape
875         (<a href="../rewrite/rewritemap.html#int">Détails ...</a>).</dd>
876
877     <dt>prg</dt>
878         <dd>Appelle un programme externe ou un script pour effectuer la
879         réécriture (<a href="../rewrite/rewritemap.html#int">Détails
880         ...</a>).</dd>
881
882     <dt>dbd or fastdbd</dt>
883         <dd>Une commande SQL SELECT à exécuter pour rechercher la cible
884         de réécriture (<a href="../rewrite/rewritemap.html#int">Détails
885         ...</a>).</dd>
886     </dl>
887
888 <p>Vous trouverez plus de détails et de nombreux exemples dans le <a href="../rewrite/rewritemap.html">RewriteMap HowTo</a>.</p>
889
890
891 </div>
892 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
893 <div class="directive-section"><h2><a name="RewriteOptions" id="RewriteOptions">RewriteOptions</a> <a name="rewriteoptions" id="rewriteoptions">Directive</a></h2>
894 <table class="directive">
895 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure certaines options spéciales
896 pour le moteur de réécriture</td></tr>
897 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteOptions <var>Options</var></code></td></tr>
898 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
899 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
900 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
901 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</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       <dt><code>AllowAnyURI</code></dt>
960       <dd>
961
962       <p>A partir de la version 2.2.22 de httpd, lorsqu'une directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code> se situe dans un
963       contexte de <code>serveur virtuel</code> ou de serveur principal,
964       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ne traitera les règles de réécriture
965       que si l'URI de la requête respecte la syntaxe d'un <a href="./directive-dict.html#Syntax">chemin URL</a>. Ceci permet
966       d'éviter certains problèmes de sécurité où des règles
967       particulières pourraient permettre  des développements de modèles
968       inattendus (voir <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3368">CVE-2011-3368</a>
969       et <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-4317">CVE-2011-4317</a>).
970       Pour s'affranchir de la restriction relative à la syntaxe des chemins URL, on peut
971       utiliser l'option <code>AllowAnyURI</code>, afin de permettre à
972       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> d'appliquer le jeu de règles à toute
973       chaîne de requête URI, sans vérifier si cette dernière respecte la
974       grammaire des chemins URL définie dans la spécification HTTP.</p>
975
976       <div class="warning">
977       <h3>Avertissement à propos de la sécurité</h3> 
978
979       <p>L'utilisation de cette option rendra le serveur vulnérable à
980       certains problèmes de sécurité si les règles de réécritures
981       concernées n'ont pas été rédigées avec soin. Il est par conséquent
982       <strong>fortement recommandé</strong> de ne pas utiliser cette
983       option. En particulier, prêtez attention aux chaînes en entrée contenant le
984       caractère '<code>@</code>', qui peuvent modifier l'interprétation
985       de l'URI réécrite, comme indiqué dans les liens ci-dessus.</p>
986       </div>
987       </dd>
988
989       <dt><code>MergeBase</code></dt>
990       <dd>
991
992       <p>Avec cette option, la valeur de la directive <code class="directive"><a href="#rewritebase">RewriteBase</a></code> est recopiée depuis
993       une valeur explicitement définie dans tout sous-répertoire qui ne
994       définit pas sa propre directive <code class="directive"><a href="#rewritebase">RewriteBase</a></code>. Disponible à partir
995       de la version 2.5 du serveur HTTP Apache.</p>
996       </dd>
997
998       </dl>
999
1000 </div>
1001 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
1002 <div class="directive-section"><h2><a name="RewriteRule" id="RewriteRule">RewriteRule</a> <a name="rewriterule" id="rewriterule">Directive</a></h2>
1003 <table class="directive">
1004 <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>
1005 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteRule
1006       <em>Modèle</em> <em>Substitution</em> [<em>drapeaux</em>]</code></td></tr>
1007 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
1008 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
1009 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
1010 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
1011 </table>
1012       <p>La directive <code class="directive">RewriteRule</code> est le
1013       véritable cheval de trait de la réécriture. La directive peut
1014       apparaître plusieurs fois, chaque instance définissant une
1015       règle de réécriture particulière. L'ordre dans lequel ces règles
1016       sont définies est important - il s'agit de l'ordre dans lequel
1017       les règles seront appliquées au cours du processus de
1018       réécriture.</p>
1019
1020       <p><a id="patterns" name="patterns"><em>Modèle</em></a> est une
1021       <a id="regexp" name="regexp">expression rationnelle</a>
1022       compatible perl. Dans la première règle de réécriture,
1023       l'expression est comparée au (%-decoded)
1024       <a href="./directive-dict.html#Syntax">chemin de l'URL</a> (ou au
1025       <a href="./directive-dict.html#Syntax">chemin fichier</a>, en
1026       fonction du contexte) de la
1027       requête. Les expressions suivantes sont comparées à la sortie de
1028       la dernière règle de réécriture qui
1029       correspondait.</p>
1030
1031 <div class="note"><h3><a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est comparé ?</a></h3>
1032
1033       <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
1034       d'abord comparé à la portion de l'URL située entre le nom d'hôte
1035       éventuellement accompagné du port, et la chaîne de paramètres (par
1036       exemple "/app1/index.html").</p>
1037
1038       <p>Dans les contextes de répertoire <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> et htaccess, le
1039       <em>modèle</em> est tout d'abord comparé au chemin du <em>système
1040       de fichiers</em>, après suppression du préfixe ou chemin de base
1041       ayant conduit le serveur vers la règle <code class="directive">RewriteRule</code> (par
1042       exemple "app1/index.html" ou
1043       "index.html" selon l'endroit où les directives sont définies).</p>
1044
1045       <p>Si vous souhaitez faire une comparaison sur le nom
1046       d'hôte, le port, ou la chaîne de requête, utilisez une
1047       directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>
1048       comportant respectivement les variables
1049       <code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code>, ou
1050       <code>%{QUERY_STRING}</code>.</p>
1051 </div>
1052
1053 <div class="note"><h3>Réécritures dans un contexte de répertoire</h3>
1054 <ul>
1055 <li>L'utilisation du moteur de réécriture dans les
1056 fichiers <a href="../howto/htaccess.html">.htaccess</a> et les sections
1057 <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> est un peu plus
1058 complexe.</li>
1059
1060 <li>Pour activer le moteur de réécriture dans ces contextes, vous devez
1061 définir "<code>RewriteEngine On</code>" <strong>et</strong>
1062 "<code>Options FollowSymLinks</code>". Si l'administrateur a désactivé
1063 la possibilité de modifier l'option <code>FollowSymLinks</code> au
1064 niveau du répertoire d'un utilisateur, vous ne pouvez pas utiliser le
1065 moteur de réécriture. Cette restriction a été instaurée à des fins de
1066 sécurité.</li>
1067
1068 <li>Lorsqu'on utilise le moteur de réécriture dans un fichier
1069 <code>.htaccess</code>, le chemin de base du répertoire courant (qui est
1070 toujours le même pour ce même répertoire) est automatiquement
1071 <em>supprimé</em> au cours de la comparaison avec le modèle de la règle
1072 de réécriture, et automatiquement <em>ajouté</em> lorsqu'une
1073 substitution relative (ne débutant pas par un slash ou un nom de
1074 protocole) arrive à la fin d'un jeu de règles. Voir la directive
1075 <code class="directive"><a href="#rewritebase">RewriteBase</a></code> pour plus de
1076 détails à propos de l'ajout du préfixe après les substitutions
1077 relatives.</li>
1078
1079 <li>Si vous souhaitez effectuer une comparaison en prenant en compte
1080 l'intégralité du
1081 chemin de l'URL dans un contexte de répertoire (htaccess), vous devez
1082 utiliser la variable <code>%{REQUEST_URI}</code> dans la directive
1083 <code class="directive">RewriteCond</code>.</li>
1084
1085 <li>Le prefixe supprimé se termine toujours par un slash, ce qui
1086 signifie que la comparaison s'effectue avec une chaîne qui ne comporte
1087 <em>jamais</em> de slash de début. Ainsi, un <em>modèle</em> contenant
1088 <code>^/</code> ne correspondra jamais dans un contexte de répertoire.</li>
1089
1090 <li>Bien que les règles de réécriture soient permises du point de vue de
1091 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
1092 n'y sont à priori d'aucune utilité.</li>
1093 </ul>
1094 </div>
1095
1096         <p>Pour quelques conseils à propos des <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expressions rationnelles</a>, voir le
1097         document <a href="../rewrite/intro.html#regex">Introduction à
1098         mod_rewrite</a>.</p>
1099
1100       <p>Dans mod_rewrite, on peut aussi utiliser le caractère NON
1101       ('<code>!</code>') comme préfixe de modèle. Ceci vous permet
1102       d'inverser la signification d'un modèle, soit pour dire
1103       ``<em>si l'URL considérée ne correspond <strong>PAS</strong> à
1104       ce modèle</em>''. Le caractère NON peut donc être utilisé à
1105       titre exceptionnel, lorsqu'il est plus simple d'effectuer une
1106       comparaison avec le modèle inversé, ou dans la dernière règle
1107       par défaut.</p>
1108
1109 <div class="note"><h3>Note</h3>
1110 Si vous utilisez le caractère NON pour inverser la signification d'un
1111 modèle, vous ne pouvez pas inclure de parties génériques groupées dans
1112 le modèle. Ceci est dû au fait que, lorsque le modèle ne correspond
1113 pas (autrement dit, sa négation correspond), les groupes sont vides.
1114 Ainsi, si vous utilisez des modèles inversés, vous ne pouvez
1115 pas vous référer aux groupes par <code>$N</code> dans la chaîne de
1116 substitution !
1117 </div>
1118
1119       <p>Dans une règle de réécriture,
1120       <a id="rhs" name="rhs"><em>Substitution</em></a> est la chaîne
1121       de caractères qui remplace le chemin de l'URL original qui
1122       correspondait au <em>Modèle</em>. <em>Substitution</em> peut
1123       être :</p>
1124
1125       <dl>
1126
1127         <dt>un chemin du système de fichiers</dt>
1128
1129         <dd>Il indique alors la localisation dans le système de
1130         fichiers de la ressource qui doit être envoyée au
1131         client. Les substitutions ne sont traitées en tant que chemins du
1132         système de fichiers que si la règle est configurée dans un
1133         contexte de serveur (serveur virtuel), et si le premier
1134         composant du chemin dans la substitution existe dans le système
1135         de fichiers.</dd>
1136
1137         <dt>chemin d'URL</dt>
1138
1139         <dd>Un chemin relatif à la valeur de <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> vers la ressource qui
1140         doit être servie. Notez que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
1141         essaie de deviner si vous avez spécifié un chemin du système
1142         de fichiers ou un chemin d'URL en vérifiant si la première
1143         partie du chemin existe à la racine du système de fichiers.
1144         Par exemple, si vous avez spécifié comme chaîne de
1145         <em>Substitution</em> <code>/www/file.html</code>, cette
1146         dernière sera traitée comme un chemin d'URL <em>à moins</em>
1147         qu'un répertoire nommé <code>www</code> n'existe à la racine
1148         de votre système de fichiers (ou dans le cas d'une
1149         réécriture au sein d'un fichier <code>.htaccess</code>,
1150         relativement à la racine des documents), auquel cas la chaîne de
1151         substitution sera traitée comme un chemin du système de
1152         fichiers. Si vous désirez que d'autres directives de
1153         correspondance d'URL (comme la directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>) soient appliquées au
1154         chemin d'URL résultant, utilisez le drapeau <code>[PT]</code>
1155         comme décrit ci-dessous.</dd>
1156
1157         <dt>URL absolue</dt>
1158
1159         <dd>Si une URL absolue est spécifiée,
1160         <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> vérifie si le nom d'hôte
1161         correspond à celui de l'hôte local. Si c'est le cas, le
1162         protocole et le nom d'hôte sont supprimés, et ce qui reste est
1163         traité comme un chemin d'URL. Dans le cas contraire, une
1164         redirection externe vers l'URL indiquée est effectuée. Pour
1165         forcer une redirection externe vers l'hôte local, voir le
1166         drapeau <code>[R]</code> ci-dessous.</dd>
1167
1168         <dt><code>-</code> (tiret)</dt>
1169
1170         <dd>Un tiret indique qu'aucune substitution ne doit être
1171         effectuée (le chemin considéré est transmis sans changement).
1172         Ceci est utile quand un drapeau doit être appliqué sans
1173         modifier le chemin (voir ci-dessous).</dd>
1174
1175       </dl>
1176
1177       <p>En plus du texte, la chaîne <em>Substition</em> peut
1178       comporter :</p>
1179
1180       <ol>
1181         <li>des références arrières (<code>$N</code>) vers le modèle
1182         d'une directive RewriteRule</li>
1183
1184         <li>des références arrières (<code>%N</code>) vers le dernier
1185         modèle d'une directive RewriteCond qui correspondait</li>
1186
1187         <li>des variables du serveur comme dans les chaînes de test de
1188         condition d'une règle (<code>%{VARNAME}</code>)</li>
1189
1190         <li>des appels de
1191         <a href="#mapfunc">fonctions de comparaison</a>
1192         (<code>${nom correspondance:clé|défaut}</code>)</li>
1193       </ol>
1194
1195       <p>Les références arrières sont des identificateurs de la forme
1196       <code>$</code><strong>N</strong> (<strong>N</strong>=0..9), qui
1197       seront remplacés par le contenu du <strong>N</strong>ème groupe
1198       du <em>Modèle</em> qui correspondait. Les variables du serveur
1199       sont les mêmes que dans la <em>Chaîne de test</em> d'une
1200       directive <code>RewriteCond</code>. Les fonctions de comparaison
1201       sont issues de la directive <code>RewriteMap</code> dans la
1202       section de laquelle elles sont décrites. Ces trois types de
1203       variables sont évaluées dans l'ordre ci-dessus.</p>
1204
1205        <p>Chaque règle de réécriture s'applique au résultat de la règle
1206        précédente, selon l'ordre dans lequel elles ont été définies dans
1207        le fichier de configuration. Le chemin de l'URL ou du système de fichier (voir
1208        ci-dessus <a href="#what_is_matched">Qu'est-ce qui est
1209        comparé ?</a>) est <strong>intégralement
1210       remplacée</strong> par la chaîne de <em>Substitution</em> et le
1211       processus de réécriture se poursuit jusqu'à ce que toutes les
1212       règles aient été appliquées, ou qu'il soit explicitement stoppé
1213       par un drapeau <a href="../rewrite/flags.html#flag_l"><code><strong>L</strong></code></a>,
1214       ou par un autre drapeau qui implique un arrêt immédiat, comme
1215       <code><strong>END</strong></code> ou
1216       <code><strong>F</strong></code>.</p>
1217
1218      <div class="note"><h3>Modifier la chaîne de requête</h3>
1219       <p>Par défaut, la chaîne de requête est transmise sans
1220       modification. Vous pouvez cependant créer dans la chaîne de
1221       substitution des URLs dont une partie constitue une chaîne de
1222       requête. Pour cela, ajoutez simplement un point d'interrogation
1223       dans la chaîne de substitution pour indiquer que le texte qui
1224       suit doit être réinjecté dans la chaîne de requête. Pour
1225       supprimer une chaîne de requête, terminez simplement la chaîne de
1226       substitution par un point d'interrogation. Pour combiner les
1227       nouvelles chaînes de requête avec les anciennes, utilisez le
1228       drapeau <code>[QSA]</code>.</p>
1229      </div>
1230
1231
1232       <p>En outre, vous pouvez spécifier des <a name="rewriteflags" id="rewriteflags">actions</a> spéciales à effectuer en ajoutant
1233       des
1234       <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
1235       comme troisième argument de la directive
1236       <code>RewriteRule</code>. Séparés par des virgules au sein d'une
1237       liste encadrée par des crochets, les <em>drapeaux</em> peuvent
1238       être choisis dans la table suivante. Vous trouverez plus de
1239       détails, et des exemples pour chaque drapeau dans le <a href="../rewrite/flags.html">document à propos des drapeaux de
1240       réécriture.</a></p>
1241
1242       <table class="bordered">
1243     <tr><th>Drapeaux et syntaxe</th>
1244         <th>Fonction</th>
1245     </tr>
1246     <tr>
1247         <td>B</td>
1248         <td>Echappe les caractères non-alphanumériques <em>avant</em>
1249         d'appliquer la transformation. <em><a href="../rewrite/flags.html#flag_b">détails ...</a></em></td>
1250     </tr>
1251     <tr>
1252         <td>chain|C</td>
1253         <td>La règle est chaînée avec la règle suivante. Si la règle
1254         échoue, la ou les règles avec lesquelles elle est est chaînée
1255         seront sautées. <em><a href="../rewrite/flags.html#flag_c">détails ...</a></em></td>
1256     </tr>
1257     <tr>
1258         <td>cookie|CO=<em>NAME</em>:<em>VAL</em></td>
1259         <td>Définit un cookie au niveau du navigateur client. La syntaxe
1260         complète est :
1261         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>
1262         <em><a href="../rewrite/flags.html#flag_co">détails ...</a></em>
1263         </td>
1264     </tr>
1265     <tr>
1266         <td>discardpath|DPI</td>
1267         <td>Supprime la partie PATH_INFO de l'URI réécrit. <em><a href="../rewrite/flags.html#flag_dpi">détails
1268         ...</a></em></td>
1269     </tr>
1270     <tr>
1271         <td>env|E=[!]<em>VAR</em>[:<em>VAL</em>]</td>
1272         <td>Définit la variable d'environnement <em>VAR</em> (à la valeur
1273         <em>VAL</em> si elle est fournie). La variante !<em>VAR</em>
1274         annule la définition de la variable <em>VAR</em>.<em><a href="../rewrite/flags.html#flag_e">détails ...</a></em></td>
1275     </tr>
1276     <tr>
1277         <td>forbidden|F</td>
1278         <td>Renvoie une réponse 403 FORBIDDEN au navigateur client.
1279         <em><a href="../rewrite/flags.html#flag_f">détails ...</a></em></td>
1280     </tr>
1281     <tr>
1282         <td>gone|G</td>
1283         <td>Renvoie un message d'erreur 410 GONE au navigateur client. <em><a href="../rewrite/flags.html#flag_g">détails ...</a></em></td>
1284     </tr>
1285     <tr>
1286         <td>Handler|H=<em>Gestionnaire de contenu</em></td>
1287         <td>L'URI résultant est envoyé au <em>Gestionnaire de
1288         contenu</em> pour traitement. <em><a href="../rewrite/flags.html#flag_h">détails ...</a></em></td>
1289     </tr>
1290     <tr>
1291         <td>last|L</td>
1292         <td>Arrête le processus de réécriture immédiatement et n'applique
1293         plus aucune règle. Prêtez une attention particulière aux mises
1294         en garde concernant les contextes de niveau répertoire et
1295         .htaccess (voir aussi le drapeau END). <em><a href="../rewrite/flags.html#flag_end">détails ...</a></em></td>
1296     </tr>
1297     <tr>
1298         <td>next|N</td>
1299         <td>Réexécute le processus de réécriture à partir de la première
1300         règle, en utilisant le résultat du jeu de règles, sous réserve
1301         qu'il y ait un point de départ. <em><a href="../rewrite/flags.html#flag_n">détails
1302         ...</a></em></td>
1303     </tr>
1304     <tr>
1305         <td>nocase|NC</td>
1306         <td>Rend la comparaison entre modèles insensible à la casse.
1307         <em><a href="../rewrite/flags.html#flag_nc">détails ...</a></em></td>
1308     </tr>
1309     <tr>
1310         <td>noescape|NE</td>
1311         <td>Empêche mod_rewrite d'effectuer un échappement hexadécimal
1312         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>
1313     </tr>
1314     <tr>
1315         <td>nosubreq|NS</td>
1316         <td>La règle est sautée si la requête courante est une
1317         sous-requête interne. <em><a href="../rewrite/flags.html#flag_ns">détails ...</a></em></td>
1318     </tr>
1319     <tr>
1320         <td>proxy|P</td>
1321         <td>Force l'envoi en interne de l'URL de substitution en tant
1322         que requête mandataire. <em><a href="../rewrite/flags.html#flag_p">détails
1323         ...</a></em></td>
1324     </tr>
1325     <tr>
1326         <td>passthrough|PT</td>
1327         <td>L'URI résultant est repassé au moteur de mise en
1328         correspondance des URLs pour y être traité par d'autres
1329         traducteurs URI-vers-nom de fichier, comme <code>Alias</code> ou
1330         <code>Redirect</code>. <em><a href="../rewrite/flags.html#flag_pt">détails ...</a></em></td>
1331     </tr>
1332     <tr>
1333         <td>qsappend|QSA</td>
1334         <td>Ajoute toute chaîne de paramètres présente dans l'URL de la
1335         requête originale à toute chaîne de paramètres créée dans la
1336         cible de réécriture. <em><a href="../rewrite/flags.html#flag_qsa">détails ...</a></em></td>
1337     </tr>
1338     <tr>
1339         <td>qsdiscard|QSD</td>
1340         <td>Supprime toute chaîne de paramètres de l'URI entrant. <em><a href="../rewrite/flags.html#flag_qsd">détails
1341         ...</a></em></td>
1342     </tr>
1343     <tr>
1344         <td>redirect|R[=<em>code</em>]</td>
1345         <td>Force une redirection externe, avec un code de statut HTTP
1346         optionnel. <em><a href="../rewrite/flags.html#flag_r">détails ...</a></em>
1347         </td>
1348     </tr>
1349     <tr>
1350         <td>END</td>
1351         <td>Arrête le processus de réécriture immédiatement et
1352         n'applique plus aucune règle. Empêche aussi l'exécution
1353         ultérieure de règles de réécriture dans des contextes de
1354         répertoire et des fichiers .htaccess (disponible depuis la
1355         version 2.3.9) <em><a href="../rewrite/flags.html#flag_l">détails ...</a></em></td>
1356     </tr>
1357     <tr>
1358         <td>skip|S=<em>nombre</em></td>
1359         <td>Si la règle courante s'applique, le moteur de réécriture
1360         doit sauter les <em>nombre</em> règles suivantes. <em><a href="../rewrite/flags.html#flag_s">détails ...</a></em></td>
1361     </tr>
1362     <tr>
1363         <td>type|T=<em>MIME-type</em></td>
1364         <td>Force l'attribution du <a class="glossarylink" href="../glossary.html#type-mime" title="voir glossaire">Type-MIME</a>
1365         spécifié au fichier cible. <em><a href="../rewrite/flags.html#flag_t">détails ...</a></em></td>
1366     </tr>
1367     </table>
1368
1369 <div class="note"><h3>Développement du répertoire home</h3>
1370 <p> Quand la chaîne de substitution commence par quelque chose comme
1371 "/~user" (de manière explicite ou par références arrières), mod_rewrite
1372 développe le répertoire home sans tenir compte de la présence ou de la
1373 configuration du module <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>.</p>
1374
1375 <p> Ce développement n'est pas effectué si le drapeau <em>PT</em> est
1376 utilisé dans la directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code></p>
1377 </div>
1378
1379      <p>Voici toutes les combinaisons de substitution et leurs
1380      significations :</p>
1381
1382       <p><strong>Dans la configuration au niveau du serveur principal
1383       (<code>httpd.conf</code>)<br />
1384        pour la requête ``<code>GET
1385       /chemin/infochemin</code>'':</strong><br />
1386       </p>
1387
1388 <table class="bordered">
1389 <tr>
1390 <th>Règle</th>
1391 <th>Résultat de la substitution</th>
1392 </tr>
1393
1394 <tr>
1395 <td>^/un_chemin(.*) autre_chemin$1</td>
1396 <td>invalide, non supporté</td>
1397 </tr>
1398
1399 <tr>
1400 <td>^/un_chemin(.*) autre_chemin$1  [R]</td>
1401 <td>invalide, non supporté</td>
1402 </tr>
1403
1404 <tr>
1405 <td>^/un_chemin(.*) autre_chemin$1  [P]</td>
1406 <td>invalide, non supporté</td>
1407 </tr>
1408
1409 <tr>
1410 <td>^/un_chemin(.*) /autre_chemin$1</td>
1411 <td>/autre_chemin/info_chemin</td>
1412 </tr>
1413
1414 <tr>
1415 <td>^/un_chemin(.*) /autre_chemin$1 [R]</td>
1416 <td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
1417 </tr>
1418
1419 <tr>
1420 <td>^/un_chemin(.*) /autre_chemin$1 [P]</td>
1421 <td>sans objet, non supporté</td>
1422 </tr>
1423
1424 <tr>
1425 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1</td>
1426 <td>/autre_chemin/info_chemin</td>
1427 </tr>
1428
1429 <tr>
1430 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [R]</td>
1431 <td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
1432 </tr>
1433
1434 <tr>
1435 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [P]</td>
1436 <td>sans objet, non supporté</td>
1437 </tr>
1438
1439 <tr>
1440 <td>^/un_chemin(.*) http://autre_hote/autre_chemin$1</td>
1441 <td>http://autre_hote/autre_chemin/info_chemin via une redirection externe</td>
1442 </tr>
1443
1444 <tr>
1445 <td>^/un_chemin(.*) http://autre_hote/autre_chemin$1 [R]</td>
1446 <td>http://autre_hote/autre_chemin/info_chemin (le drapeau [R] est
1447 redondant)</td>
1448 </tr>
1449
1450 <tr>
1451 <td>^/somepath(.*) http://otherhost/otherpath$1 [P]</td>
1452 <td>http://otherhost/otherpath/pathinfo via internal proxy</td>
1453 </tr>
1454 </table>
1455
1456       <p><strong>Dans une configuration de niveau répertoire pour
1457       <code>/chemin</code><br />
1458        (<code>/chemin/physique/vers/chemin/.htacccess</code>, avec
1459       <code>RewriteBase /chemin</code>)<br />
1460        pour la requête ``<code>GET
1461       /chemin/chemin-local/infochemin</code>'':</strong><br />
1462      </p>
1463
1464 <table class="bordered">
1465
1466 <tr>
1467 <th>Règle</th>
1468 <th>Résultat de la substitution</th>
1469 </tr>
1470
1471 <tr>
1472 <td>^chemin-local(.*) autre-chemin$1</td>
1473 <td>/chemin/autre-chemin/infochemin</td>
1474 </tr>
1475
1476 <tr>
1477 <td>^chemin-local(.*) autre-chemin$1  [R]</td>
1478 <td>http://cet-hôte/chemin/autre-chemin/infochemin via redirection
1479 externe</td>
1480 </tr>
1481
1482 <tr>
1483 <td>^chemin-local(.*) autre-chemin$1  [P]</td>
1484 <td>n'a pas lieu d'être, non supporté</td>
1485 </tr>
1486
1487 <tr>
1488 <td>^chemin-local(.*) /autre-chemin$1</td>
1489 <td>/autre-chemin/infochemin</td>
1490 </tr>
1491
1492 <tr>
1493 <td>^chemin-local(.*) /autre-chemin$1 [R]</td>
1494 <td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
1495 </tr>
1496
1497 <tr>
1498 <td>^chemin-local(.*) /autre-chemin$1 [P]</td>
1499 <td>n'a pas lieu d'être, non supporté</td>
1500 </tr>
1501
1502 <tr>
1503 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1</td>
1504 <td>/autre-chemin/infochemin</td>
1505 </tr>
1506
1507 <tr>
1508 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [R]</td>
1509 <td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
1510 </tr>
1511
1512 <tr>
1513 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [P]</td>
1514 <td>n'a pas lieu d'être, non supporté</td>
1515 </tr>
1516
1517 <tr>
1518 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1</td>
1519 <td>http://autre hôte/autre-chemin/infochemin via redirection externe</td>
1520 </tr>
1521
1522 <tr>
1523 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [R]</td>
1524 <td>http://autre hôte/autre-chemin/infochemin via redirection externe
1525 (le drapeau [R] est redondant)</td>
1526 </tr>
1527
1528 <tr>
1529 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [P]</td>
1530 <td>http://autre hôte/autre-chemin/infochemin via un mandataire interne</td>
1531 </tr>
1532
1533 </table>
1534
1535   
1536 </div>
1537 </div>
1538 <div class="bottomlang">
1539 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
1540 <a href="../fr/mod/mod_rewrite.html" title="Français">&nbsp;fr&nbsp;</a></p>
1541 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
1542 <script type="text/javascript"><!--//--><![CDATA[//><!--
1543 var comments_shortname = 'httpd';
1544 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_rewrite.html';
1545 (function(w, d) {
1546     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
1547         d.write('<div id="comments_thread"><\/div>');
1548         var s = d.createElement('script');
1549         s.type = 'text/javascript';
1550         s.async = true;
1551         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
1552         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
1553     }
1554     else {
1555         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
1556     }
1557 })(window, document);
1558 //--><!]]></script></div><div id="footer">
1559 <p class="apache">Copyright 2013 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
1560 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.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[//><!--
1561 if (typeof(prettyPrint) !== 'undefined') {
1562     prettyPrint();
1563 }
1564 //--><!]]></script>
1565 </body></html>