tech.xml.fr revision 255e0e7a96ad3f76da14e128959735178115fb23
22a41ae508535e87c3c2270202ae78de6ac4672crbowen<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
22a41ae508535e87c3c2270202ae78de6ac4672crbowen<!-- English Revision : 636043 -->
22a41ae508535e87c3c2270202ae78de6ac4672crbowen<!-- French translation : Lucien GENTIS -->
22a41ae508535e87c3c2270202ae78de6ac4672crbowen<!-- Reviewed by : Vincent Deffontaines -->
22a41ae508535e87c3c2270202ae78de6ac4672crbowen Licensed to the Apache Software Foundation (ASF) under one or more
22a41ae508535e87c3c2270202ae78de6ac4672crbowen contributor license agreements. See the NOTICE file distributed with
22a41ae508535e87c3c2270202ae78de6ac4672crbowen this work for additional information regarding copyright ownership.
22a41ae508535e87c3c2270202ae78de6ac4672crbowen The ASF licenses this file to You under the Apache License, Version 2.0
4eb5e97c7a147352e1017b0114d2719d5f67cea9rbowen (the "License"); you may not use this file except in compliance with
22a41ae508535e87c3c2270202ae78de6ac4672crbowen the License. You may obtain a copy of the License at
22a41ae508535e87c3c2270202ae78de6ac4672crbowen Unless required by applicable law or agreed to in writing, software
4b5981e276e93df97c34e4da05ca5cf8bbd937dand distributed under the License is distributed on an "AS IS" BASIS,
22a41ae508535e87c3c2270202ae78de6ac4672crbowen WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
f3ec420152ca921e4c1ce77782f51b53f659018dnd See the License for the specific language governing permissions and
bd2feb86ee6d8c91ecd992138ceb96a7069a5578gryzor limitations under the License.
22a41ae508535e87c3c2270202ae78de6ac4672crbowen <title>Détails techniques sur le module Apache mod_rewrite</title>
22a41ae508535e87c3c2270202ae78de6ac4672crbowen<p>Ce document passe en revue certains détails techniques à propos du
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowenmodule mod_rewrite et de la mise en correspondance des URLs</p>
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen<seealso><a href="/mod/mod_rewrite.html">Documentation du module</a></seealso>
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen<seealso><a href="intro.html">Introduction à mod_rewrite</a></seealso>
22a41ae508535e87c3c2270202ae78de6ac4672crbowen<seealso><a href="rewrite_guide.html">Guide de réécriture - exemples
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen<seealso><a href="rewrite_guide_advanced.html">Guide de réécriture
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowenavancée - exemples utiles avancés</a></seealso>
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen<section id="Internal"><title>Fonctionnement interne</title>
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen <p>Le fonctionnement interne de ce module est très complexe, mais
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen il est nécessaire de l'expliquer, même à l'utilisateur "standard",
22a41ae508535e87c3c2270202ae78de6ac4672crbowen afin d'éviter les erreurs courantes et de pouvoir exploiter toutes
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen ses fonctionnalités.</p>
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen<section id="InternalAPI"><title>Phases de l'API</title>
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen <p>Il faut tout d'abord bien comprendre que le traitement d'une
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen requête HTTP par Apache s'effectue en plusieurs phases. L'API
22a41ae508535e87c3c2270202ae78de6ac4672crbowen d'Apache fournit un point d'accroche (hook) pour chacune de ces
22a41ae508535e87c3c2270202ae78de6ac4672crbowen phases. Mod_rewrite utilise deux de ces hooks : le hook de
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen conversion des URLs en noms de fichiers qui est utilisé quand la
0b1f1f5b70f1d4df3b6a6eb4c92f6869719dc711rbowen requête HTTP a été lue mais avant le démarrage de tout processus
f5cfdad942d8d69e7991d58f0910688e7821ed9cslive d'autorisation, et le hook "Fixup" qui est déclenché après les
22a41ae508535e87c3c2270202ae78de6ac4672crbowen phases d'autorisation et après la lecture des fichiers de
22a41ae508535e87c3c2270202ae78de6ac4672crbowen configuration niveau répertoire (<code>.htaccess</code>), mais
22a41ae508535e87c3c2270202ae78de6ac4672crbowen avant que le gestionnaire de contenu soit activé.</p>
f3f7fbd152943fb15146b438ec8a4c39c404a2fbrbowen <p>Donc, lorsqu'une requête arrive et quand Apache a déterminé le
f3f7fbd152943fb15146b438ec8a4c39c404a2fbrbowen serveur correspondant (ou le serveur virtuel), le moteur de
22a41ae508535e87c3c2270202ae78de6ac4672crbowen réécriture commence le traitement de toutes les directives de
f5cfdad942d8d69e7991d58f0910688e7821ed9cslive mod_rewrite de la configuration du serveur principal dans la phase
22a41ae508535e87c3c2270202ae78de6ac4672crbowen de conversion URL vers nom de fichier. Une fois ces étapes
ec7f95732d562ee4f5586faea04d12df7fb20180rbowen franchies, lorsque les repertoires de données finaux ont été
ec7f95732d562ee4f5586faea04d12df7fb20180rbowen trouvés, les directives de configuration de mod_rewrite au niveau
ec7f95732d562ee4f5586faea04d12df7fb20180rbowen répertoire sont éxécutées dans la phase Fixup. Dans les deux cas,
22a41ae508535e87c3c2270202ae78de6ac4672crbowen mod_rewrite réécrit les URLs soit en nouvelles URLs, soit en noms
22a41ae508535e87c3c2270202ae78de6ac4672crbowen de fichiers, bien que la distinction entre les deux ne soit pas
22a41ae508535e87c3c2270202ae78de6ac4672crbowen évidente. Cette utilisation de l'API n'était pas sensée s'opérer
f3ec420152ca921e4c1ce77782f51b53f659018dnd de cette manière lorsque l'API fut conçue, mais depuis Apache 1.x,
bd2feb86ee6d8c91ecd992138ceb96a7069a5578gryzor c'est le seul mode opératoire possible pour mod_rewrite. Afin de
f3ec420152ca921e4c1ce77782f51b53f659018dnd rendre les choses plus claires, souvenez-vous de ces deux points :</p>
22a41ae508535e87c3c2270202ae78de6ac4672crbowen <li>Bien que mod_rewrite réécrive les URLs en URLs, les URLs en
22a41ae508535e87c3c2270202ae78de6ac4672crbowen noms de fichiers et même des noms de fichiers en d'autres noms