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="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <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">&nbsp;en&nbsp;</a> |
25<a href="/fr/rewrite/avoid.html" title="Fran�ais">&nbsp;fr&nbsp;</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">&lt;VirtualHost *:80&gt;
101ServerName www.example.com
102Redirect / https://www.example.com/
103&lt;/VirtualHost &gt;
104
105&lt;VirtualHost *:443&gt;
106ServerName www.example.com
107#  ... ins�rer ici la configuration SSL
108&lt;/VirtualHost &gt;</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&lt;VirtualHost&gt; 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">&lt;If&gt;</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">&lt;If&gt;</a></code> comme
218suit :</p>
219
220<pre class="prettyprint lang-config">&lt;If "req('Host') != 'www.example.com'"&gt;
221    Redirect / http://www.example.com
222&lt;/If&gt;</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 &lt;If&gt;,
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">&nbsp;en&nbsp;</a> |
238<a href="/fr/rewrite/avoid.html" title="Fran�ais">&nbsp;fr&nbsp;</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&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
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>