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