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>Quand ne pas utiliser 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.min.js" type="text/javascript"> 13</script> 14 15<link href="/images/favicon.ico" rel="shortcut icon" /></head> 16<body id="manual-page"><div id="page-header"> 17<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> 18<p class="apache">Serveur Apache HTTP Version 2.4</p> 19<img alt="" src="/images/feather.gif" /></div> 20<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<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.4</a> > <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>Quand ne pas utiliser mod_rewrite</h1> 23<div class="toplang"> 24<p><span>Langues Disponibles: </span><a href="/en/rewrite/avoid.html" hreflang="en" rel="alternate" title="English"> en </a> | 25<a href="/fr/rewrite/avoid.html" title="Fran�ais"> fr </a></p> 26</div> 27 28 29<p>Ce document est un compl�ment � la <a href="/mod/mod_rewrite.html">Documentation de r�f�rence</a> de 30<code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>. Il d�crit peut-�tre un des concepts les 31plus importants � propos de mod_rewrite - � savoir, quand doit-on �viter 32de l'utiliser.</p> 33 34<p>mod_rewrite doit �tre consid�r� comme un dernier recours, 35lorsqu'aucune alternative n'est possible. Utiliser mod_rewrite lorsqu'il 36existe des alternatives plus simples conduit � des configurations 37confuses, fragiles, et difficiles � maintenir. La compr�hension des 38autres alternatives disponibles est une �tape tr�s importante sur le 39chemin de la ma�trise de mod_rewrite.</p> 40 41<p>Vous devez vous attacher � comprendre le 42fonctionnement des exemples, car la plupart d'entre eux ne 43fonctionneront pas sur votre syst�me si vous vous contentez de les 44copier/coller dans vos fichiers de configuration.</p> 45 46<p>Le cas le plus courant dans lequel <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> est 47l'outil appropri� est la situation o� la seule solution envisageable 48n�cessite l'acc�s aux fichiers de configuration du serveur, alors que 49cet acc�s ne vous est pas accord�. Certaines directives de configuration 50ne sont disponibles que dans le fichier de configuration du serveur. Si 51vous ne pouvez agir que sur les fichiers .htaccess, vous devrez donc 52vous tourner vers <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>.</p> 53 54</div> 55<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#redirect">Redirection simple</a></li> 56<li><img alt="" src="/images/down.gif" /> <a href="#alias">Alias d'URL</a></li> 57<li><img alt="" src="/images/down.gif" /> <a href="#vhosts">H�bergement virtuel</a></li> 58<li><img alt="" src="/images/down.gif" /> <a href="#proxy">Mandat simple</a></li> 59<li><img alt="" src="/images/down.gif" /> <a href="#setenv">Test de variables d'environnement</a></li> 60</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="/mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction � mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en 61correspondance</a></li><li><a href="access.html">Contr�le d'acc�s</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Serveurs mandataires</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avanc�es</a></li></ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div> 62<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 63<div class="section"> 64<h2><a name="redirect" id="redirect">Redirection simple</a></h2> 65 66 67<p><code class="module"><a href="/mod/mod_alias.html">mod_alias</a></code> fournit les directives <code class="directive"><a href="/mod/mod_alias.html#redirect">Redirect</a></code> et <code class="directive"><a href="/mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> qui permettent de 68rediriger une URL vers une autre. Plut�t que d'utiliser la directive 69<code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> pour ce genre de 70redirection simple d'une URL ou d'une classe d'URLs vers une autre, on 71pr�f�rera l'utilisation de ces directives. En outre, avec 72<code>RedirectMatch</code>, vous pouvez inclure une expression 73rationnelle dans votre crit�re de redirection, ce qui vous permet de 74b�n�ficier de nombreux avantages de la directive 75<code>RewriteRule</code>.</p> 76 77<p>Une utilisation courante de la directive <code>RewriteRule</code> est 78la redirection de toute une classe d'URLs. Par exemple, toutes les URLs 79faisant r�f�rence au r�pertoire <code>/un</code> doivent �tre 80redirig�es vers <code>http://un.example.com/</code>, ou toutes les 81requ�tes <code>http</code> doivent �tre redirig�es vers 82<code>https</code>.</p> 83 84<p>Pour ce faire, il est pr�f�rable d'utiliser la directive 85<code>Redirect</code>. Souvenez-vous que la directive 86<code>Redirect</code> conserve les informations relatives au chemin. En 87d'autres termes, la redirection d'une URL <code>/un</code> va aussi 88rediriger toutes les URLs de niveaux inf�rieurs comme 89<code>/un/deux.html</code> et <code>/un/trois/quatre.html</code>.</p> 90 91<p>Pour rediriger les URLs sous <code>/un</code> vers 92<code>http://un.example.com/</code>, utilisez cette d�finition :</p> 93 94<pre class="prettyprint lang-config">Redirect /one/ http://one.example.com/</pre> 95 96 97<p>Pour rediriger les URLs <code>http</code> vers <code>https</code>, 98utilisez cette d�finition :</p> 99 100<pre class="prettyprint lang-config"><VirtualHost *:80> 101ServerName www.example.com 102Redirect / https://www.example.com/ 103</VirtualHost > 104 105<VirtualHost *:443> 106ServerName www.example.com 107# ... ins�rer ici la configuration SSL 108</VirtualHost ></pre> 109 110 111<p>L'utilisation de la directive <code>RewriteRule</code> pour accomplir 112cette t�che peut se justifier s'il existe d'autres directives 113<code>RewriteRule</code> dans la m�me port�e. En effet, lorsque des 114directives <code>Redirect</code> et <code>RewriteRule</code> se trouvent 115dans la m�me port�e, les directives <code>RewriteRule</code> sont 116ex�cut�es en premier, sans tenir compte de leur ordre d'apparition dans 117le fichier de configuration.</p> 118 119<p>Dans le cas de la redirection <em>http-vers-https</em>, l'utilisation 120de r�gles <code>RewriteRule</code> se justifie si vous n'avez pas acc�s 121au fichier de configuration principal, et devez donc accomplir cette 122t�che au sein d'un fichier <code>.htaccess</code>.</p> 123 124</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 125<div class="section"> 126<h2><a name="alias" id="alias">Alias d'URL</a></h2> 127<p>La directive <code class="directive"><a href="/mod/mod_alias.html#alias">Alias</a></code> permet 128de mettre en correspondance un URI avec un r�pertoire, ce dernier �tant 129en g�n�ral situ� en dehors de l'arborescence d�finie par la directive 130<code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code>. Bien qu'il soit 131possible d'effectuer cette mise en correspondance avec 132<code>mod_rewrite</code>, il est pr�f�rable d'utiliser la directive 133<code>Alias</code> pour des raisons de simplicit� et de performances.</p> 134 135<div class="example"><h3>Utilisation de la directive Alias</h3><pre class="prettyprint lang-config">Alias /cats 136/var/www/virtualhosts/felines/htdocs</pre> 137</div> 138 139<p> 140Pour effectuer cette mise en correspondance, <code>mod_rewrite</code> 141s'impose si vous n'avez pas acc�s aux fichiers de configuration du 142serveur. En effet, la directive Alias ne peut pas �tre utilis�e dans un 143fichier <code>.htaccess</code>, mais seulement dans un contexte de 144serveur principal ou de serveur virtuel. 145</p> 146 147<p>En outre, vous pouvez arriver au m�me r�sultat avec les liens 148symboliques, pourvu que <code>Options FollowSymLinks</code> soit activ� 149sur votre serveur.</p> 150</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 151<div class="section"> 152<h2><a name="vhosts" id="vhosts">H�bergement virtuel</a></h2> 153<p>Bien qu'il soit possible de g�rer les <a href="vhosts.html">serveurs 154virtuels avec mod_rewrite</a>, il s'agit rarement de la bonne m�thode. 155Il est pratiquement toujours pr�f�rable de cr�er des blocs 156<VirtualHost> individuels. Dans l'�ventualit� o� vous devez g�rer 157un grand nombre de serveurs virtuels, vous devez vous tourner vers 158<code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> pour cr�er ces serveurs 159automatiquement.</p> 160 161<p>Il est aussi possible d'utiliser des modules comme <code class="module"><a href="/mod/mod_macro.html">mod_macro</a></code> pour 162cr�er un grand nombre de serveurs virtuels dynamiquement.</p> 163 164<p>L'utilisation de <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> pour la cr�ation de 165serveurs virtuels peut se r�v�ler appropri�e si votre service 166d'h�bergement ne vous permet pas d'acc�der aux fichiers de configuration 167du serveur, et que vous soyez par cons�quent oblig� de passer par les 168fichiers <code>.htaccess</code>.</p> 169 170<p>Voir le document <a href="vhosts.html">cr�ation de serveurs virtuels 171avec mod_rewrite</a> pour plus de d�tails sur la mani�re d'y parvenir si 172cela semble �tre tout de m�me la meilleure approche.</p> 173 174</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 175<div class="section"> 176<h2><a name="proxy" id="proxy">Mandat simple</a></h2> 177 178<p>La directive <code>RewriteRule</code> fournit le drapeau <a href="flags.html#flag_p">[P]</a> qui permet de faire passer les URIs 179r��crits par <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code>.</p> 180 181<pre class="prettyprint lang-config">RewriteRule ^/?images(.*) http://serveur-images.local/images$1 [P]</pre> 182 183 184<p>Cependant, dans les nombreux cas o� aucune correspondance au mod�le 185n'est vraiment n�cessaire, comme dans l'exemple ci-dessus, il est 186pr�f�rable d'utiliser la directive <code class="directive"><a href="/mod/mod_proxy.html#proxypass">ProxyPass</a></code>. L'exemple pr�c�dent pourrait 187�tre remplac� par :</p> 188 189<pre class="prettyprint lang-config">ProxyPass /images/ http://serveur-images.local/images/</pre> 190 191 192<p>Que vous utilisiez <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> ou <code class="directive"><a href="/mod/mod_proxy.html#proxypass">ProxyPass</a></code>, vous devrez dans tous les cas 193utiliser aussi la directive <code class="directive"><a href="/mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> pour intercepter les 194redirections en provenance du serveur d'arri�re-plan :</p> 195 196<pre class="prettyprint lang-config">ProxyPassReverse /images/ http://serveur-images.local/images/</pre> 197 198 199<p>Vous devrez cependant tout de m�me utiliser <code>RewriteRule</code> 200lorsque d'autres <code>RewriteRule</code>s se trouvent dans la m�me port�e, 201car elles agissent en g�n�ral avant les directives 202<code>ProxyPass</code>, et peuvent ainsi les court-circuiter.</p> 203 204</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 205<div class="section"> 206<h2><a name="setenv" id="setenv">Test de variables d'environnement</a></h2> 207 208<p><code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> est souvent utilis� pour effectuer une 209action en fonction de la pr�sence ou de l'absence d'une variable 210d'environnement particuli�re ou d'un en-t�te de requ�te, ce qui peut 211�tre accompli de mani�re plus efficace via la directive <code class="directive"><a href="/mod/core.html#if"><If></a></code>.</p> 212 213<p>Consid�rons par exemple le sc�nario courant o� la directive 214<code class="directive">RewriteRule</code> est utilis�e pour forcer un nom 215d'h�te canonique, tel que <code>www.example.com</code> au lieu de 216<code>example.com</code>. Il est possible d'utiliser � la place la 217directive <code class="directive"><a href="/mod/core.html#if"><If></a></code> comme 218suit :</p> 219 220<pre class="prettyprint lang-config"><If "req('Host') != 'www.example.com'"> 221 Redirect / http://www.example.com 222</If></pre> 223 224 225<p>On peut utiliser cette technique dans de nombreux sc�narios courant 226pour remplacer <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> pour effectuer des actions 227en fonction d'en-t�tes de requ�tes ou de r�ponses, ou de variables 228d'environnement.</p> 229 230<p>Voir en particulier la <a href="/expr.html">documentation sur 231l'�valuation des expressions</a> pour une vue d'ensemble des types 232d'expressions que vous pouvez utiliser dans les sections <If>, 233ainsi que dans certaines directives.</p> 234 235</div></div> 236<div class="bottomlang"> 237<p><span>Langues Disponibles: </span><a href="/en/rewrite/avoid.html" hreflang="en" rel="alternate" title="English"> en </a> | 238<a href="/fr/rewrite/avoid.html" title="Fran�ais"> fr </a></p> 239</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> 240<script type="text/javascript"><!--//--><![CDATA[//><!-- 241var comments_shortname = 'httpd'; 242var comments_identifier = 'http://httpd.apache.org/docs/2.4/rewrite/avoid.html'; 243(function(w, d) { 244 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 245 d.write('<div id="comments_thread"><\/div>'); 246 var s = d.createElement('script'); 247 s.type = 'text/javascript'; 248 s.async = true; 249 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 250 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 251 } 252 else { 253 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 254 } 255})(window, document); 256//--><!]]></script></div><div id="footer"> 257<p class="apache">Copyright 2014 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> 258<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[//><!-- 259if (typeof(prettyPrint) !== 'undefined') { 260 prettyPrint(); 261} 262//--><!]]></script> 263</body></html>