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