|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
|
|
Packit |
90a5c9 |
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
Packit |
90a5c9 |
This file is generated from xml source: DO NOT EDIT
|
|
Packit |
90a5c9 |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
Packit |
90a5c9 |
-->
|
|
Packit |
90a5c9 |
<title>Quand ne pas utiliser mod_rewrite - Serveur HTTP Apache Version 2.4</title>
|
|
Packit |
90a5c9 |
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
|
|
Packit |
90a5c9 |
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
|
|
Packit |
90a5c9 |
<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" />
|
|
Packit |
90a5c9 |
<script src="../style/scripts/prettify.min.js" type="text/javascript">
|
|
Packit |
90a5c9 |
</script>
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
|
|
Packit |
90a5c9 |
<body id="manual-page">
|
|
Packit |
90a5c9 |
Modules | Directives | FAQ | Glossaire | Plan du site
|
|
Packit |
90a5c9 |
Serveur HTTP Apache Version 2.4
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Apache > Serveur HTTP > Documentation > Version 2.4 > RewriteQuand ne pas utiliser mod_rewrite
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Langues Disponibles: en |
|
|
Packit |
90a5c9 |
fr
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Ce document est un complément à la Documentation de référence de
|
|
Packit |
90a5c9 |
mod_rewrite . Il décrit peut-être un des concepts les
|
|
Packit |
90a5c9 |
plus importants à propos de mod_rewrite - à savoir, quand doit-on éviter
|
|
Packit |
90a5c9 |
de l'utiliser.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
mod_rewrite doit être considéré comme un dernier recours,
|
|
Packit |
90a5c9 |
lorsqu'aucune alternative n'est possible. Utiliser mod_rewrite lorsqu'il
|
|
Packit |
90a5c9 |
existe des alternatives plus simples conduit à des configurations
|
|
Packit |
90a5c9 |
confuses, fragiles, et difficiles à maintenir. La compréhension des
|
|
Packit |
90a5c9 |
autres alternatives disponibles est une étape très importante sur le
|
|
Packit |
90a5c9 |
chemin de la maîtrise de mod_rewrite .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Vous devez vous attacher à comprendre le
|
|
Packit |
90a5c9 |
fonctionnement des exemples, car la plupart d'entre eux ne
|
|
Packit |
90a5c9 |
fonctionneront pas sur votre système si vous vous contentez de les
|
|
Packit |
90a5c9 |
copier/coller dans vos fichiers de configuration.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Le cas le plus courant dans lequel mod_rewrite est
|
|
Packit |
90a5c9 |
l'outil approprié est la situation où la seule solution envisageable
|
|
Packit |
90a5c9 |
nécessite l'accès aux fichiers de configuration du serveur, alors que
|
|
Packit |
90a5c9 |
cet accès ne vous est pas accordé. Certaines directives de configuration
|
|
Packit |
90a5c9 |
ne sont disponibles que dans le fichier de configuration du serveur. Si
|
|
Packit |
90a5c9 |
vous ne pouvez agir que sur les fichiers .htaccess, vous devrez donc
|
|
Packit |
90a5c9 |
vous tourner vers mod_rewrite .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Alias d'URL
|
|
Packit |
90a5c9 |
Hébergement virtuel
|
|
Packit |
90a5c9 |
Mandat simple
|
|
Packit |
90a5c9 |
Test de variables d'environnement
|
|
Packit |
90a5c9 |
Voir aussi
|
|
Packit |
90a5c9 |
correspondanceContrôle d'accèsServeurs virtuelsServeurs mandatairesUtilisation de RewriteMapTechniques avancéesCommentaires
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
mod_alias fournit les directives Redirect et RedirectMatch qui permettent de
|
|
Packit |
90a5c9 |
rediriger une URL vers une autre. Plutôt que d'utiliser la directive
|
|
Packit |
90a5c9 |
RewriteRule pour ce genre de
|
|
Packit |
90a5c9 |
redirection simple d'une URL ou d'une classe d'URLs vers une autre, on
|
|
Packit |
90a5c9 |
préfèrera l'utilisation de ces directives. En outre, avec
|
|
Packit |
90a5c9 |
RedirectMatch , vous pouvez inclure une expression
|
|
Packit |
90a5c9 |
rationnelle dans votre critère de redirection, ce qui vous permet de
|
|
Packit |
90a5c9 |
bénéficier de nombreux avantages de la directive
|
|
Packit |
90a5c9 |
RewriteRule .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Une utilisation courante de la directive RewriteRule est
|
|
Packit |
90a5c9 |
la redirection de toute une classe d'URLs. Par exemple, toutes les URLs
|
|
Packit |
90a5c9 |
faisant référence au répertoire /un doivent être
|
|
Packit |
90a5c9 |
redirigées vers http://un.example.com/ , ou toutes les
|
|
Packit |
90a5c9 |
requêtes http doivent être redirigées vers
|
|
Packit |
90a5c9 |
https .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Pour ce faire, il est préférable d'utiliser la directive
|
|
Packit |
90a5c9 |
Redirect . Souvenez-vous que la directive
|
|
Packit |
90a5c9 |
Redirect conserve les informations relatives au chemin. En
|
|
Packit |
90a5c9 |
d'autres termes, la redirection d'une URL /un va aussi
|
|
Packit |
90a5c9 |
rediriger toutes les URLs de niveaux inférieurs comme
|
|
Packit |
90a5c9 |
/un/deux.html et /un/trois/quatre.html .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Pour rediriger les URLs sous /un vers
|
|
Packit |
90a5c9 |
http://un.example.com/ , utilisez cette définition :
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Redirect /one/ http://one.example.com/
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Pour rediriger un nom d'hôte vers un autre nom d'hôte, par exemple
|
|
Packit |
90a5c9 |
example.com vers www.example.com , voir la
|
|
Packit |
90a5c9 |
méthode Noms d'hôtes canoniques.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Pour rediriger les URLs http vers https ,
|
|
Packit |
90a5c9 |
utilisez cette définition :
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
<VirtualHost *:80>
|
|
Packit |
90a5c9 |
ServerName www.example.com
|
|
Packit |
90a5c9 |
Redirect "/" "https://www.example.com/"
|
|
Packit |
90a5c9 |
</VirtualHost>
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
<VirtualHost *:443>
|
|
Packit |
90a5c9 |
ServerName www.example.com
|
|
Packit |
90a5c9 |
# ... insérer ici la configuration SSL
|
|
Packit |
90a5c9 |
</VirtualHost>
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
L'utilisation de la directive RewriteRule pour accomplir
|
|
Packit |
90a5c9 |
cette tâche peut se justifier s'il existe d'autres directives
|
|
Packit |
90a5c9 |
RewriteRule dans la même portée. En effet, lorsque des
|
|
Packit |
90a5c9 |
directives Redirect et RewriteRule se trouvent
|
|
Packit |
90a5c9 |
dans la même portée, les directives RewriteRule sont
|
|
Packit |
90a5c9 |
exécutées en premier, sans tenir compte de leur ordre d'apparition dans
|
|
Packit |
90a5c9 |
le fichier de configuration.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Dans le cas de la redirection http-vers-https, l'utilisation
|
|
Packit |
90a5c9 |
de règles RewriteRule se justifie si vous n'avez pas accès
|
|
Packit |
90a5c9 |
au fichier de configuration principal, et devez donc accomplir cette
|
|
Packit |
90a5c9 |
tâche au sein d'un fichier .htaccess .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
La directive Alias permet
|
|
Packit |
90a5c9 |
de mettre en correspondance un URI avec un répertoire, ce dernier étant
|
|
Packit |
90a5c9 |
en général situé en dehors de l'arborescence définie par la directive
|
|
Packit |
90a5c9 |
DocumentRoot . Bien qu'il soit
|
|
Packit |
90a5c9 |
possible d'effectuer cette mise en correspondance avec
|
|
Packit |
90a5c9 |
mod_rewrite , il est préférable d'utiliser la directive
|
|
Packit |
90a5c9 |
Alias pour des raisons de simplicité
|
|
Packit |
90a5c9 |
et de performances.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Utilisation de la directive AliasAlias "/cats" "/var/www/virtualhosts/felines/htdocs"
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Pour effectuer cette mise en correspondance, mod_rewrite
|
|
Packit |
90a5c9 |
s'impose si vous n'avez pas accès aux fichiers de configuration du
|
|
Packit |
90a5c9 |
serveur. En effet, la directive Alias ne peut pas être utilisée dans un
|
|
Packit |
90a5c9 |
fichier .htaccess , mais seulement dans un contexte de
|
|
Packit |
90a5c9 |
serveur principal ou de serveur virtuel.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
En outre, vous pouvez arriver au même résultat avec les liens
|
|
Packit |
90a5c9 |
symboliques, pourvu que Options FollowSymLinks soit activé
|
|
Packit |
90a5c9 |
sur votre serveur.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Bien qu'il soit possible de gérer les serveurs
|
|
Packit |
90a5c9 |
virtuels avec mod_rewrite, il s'agit rarement de la bonne méthode.
|
|
Packit |
90a5c9 |
Il est pratiquement toujours préférable de créer des blocs
|
|
Packit |
90a5c9 |
<VirtualHost> individuels.
|
|
Packit |
90a5c9 |
Dans l'éventualité où vous devez gérer
|
|
Packit |
90a5c9 |
un grand nombre de serveurs virtuels, vous devez vous tourner vers
|
|
Packit |
90a5c9 |
mod_vhost_alias pour créer ces serveurs
|
|
Packit |
90a5c9 |
automatiquement.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Il est aussi possible d'utiliser des modules comme mod_macro pour
|
|
Packit |
90a5c9 |
créer un grand nombre de serveurs virtuels dynamiquement.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
L'utilisation de mod_rewrite pour la création de
|
|
Packit |
90a5c9 |
serveurs virtuels peut se révéler appropriée si votre service
|
|
Packit |
90a5c9 |
d'hébergement ne vous permet pas d'accéder aux fichiers de configuration
|
|
Packit |
90a5c9 |
du serveur, et que vous soyez par conséquent obligé de passer par les
|
|
Packit |
90a5c9 |
fichiers .htaccess .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Voir le document création de serveurs virtuels
|
|
Packit |
90a5c9 |
avec mod_rewrite pour plus de détails sur la manière d'y parvenir si
|
|
Packit |
90a5c9 |
cela semble être tout de même la meilleure approche.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
La directive RewriteRule fournit
|
|
Packit |
90a5c9 |
le drapeau [P] qui permet de faire passer les URIs
|
|
Packit |
90a5c9 |
réécrits par mod_proxy .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
RewriteRule "^/?images(.*)" "http://serveur-images.local/images$1" [P]
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Cependant, dans les nombreux cas où aucune correspondance au modèle
|
|
Packit |
90a5c9 |
n'est vraiment nécessaire, comme dans l'exemple ci-dessus, il est
|
|
Packit |
90a5c9 |
préférable d'utiliser la directive ProxyPass . L'exemple précédent pourrait
|
|
Packit |
90a5c9 |
être remplacé par :
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
ProxyPass "/images/" "http://serveur-images.local/images/"
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Que vous utilisiez RewriteRule ou ProxyPass , vous devrez dans tous les cas
|
|
Packit |
90a5c9 |
utiliser aussi la directive ProxyPassReverse pour intercepter les
|
|
Packit |
90a5c9 |
redirections en provenance du serveur d'arrière-plan :
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
ProxyPassReverse "/images/" "http://serveur-images.local/images/"
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Vous devrez cependant tout de même utiliser RewriteRule
|
|
Packit |
90a5c9 |
lorsque d'autres RewriteRule s se trouvent dans la même portée,
|
|
Packit |
90a5c9 |
car elles agissent en général avant les directives
|
|
Packit |
90a5c9 |
ProxyPass , et peuvent ainsi les court-circuiter.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
mod_rewrite est souvent utilisé pour effectuer une
|
|
Packit |
90a5c9 |
action en fonction de la présence ou de l'absence d'une variable
|
|
Packit |
90a5c9 |
d'environnement particulière ou d'un en-tête de requête, ce qui peut
|
|
Packit |
90a5c9 |
être accompli de manière plus efficace via la directive <If> .
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Considérons par exemple le scénario courant où la directive
|
|
Packit |
90a5c9 |
RewriteRule est utilisée pour forcer un nom
|
|
Packit |
90a5c9 |
d'hôte canonique, tel que www.example.com au lieu de
|
|
Packit |
90a5c9 |
example.com . Il est possible d'utiliser à la place la
|
|
Packit |
90a5c9 |
directive <If> comme
|
|
Packit |
90a5c9 |
suit :
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
<If "req('Host') != 'www.example.com'">
|
|
Packit |
90a5c9 |
Redirect "/" "http://www.example.com"
|
|
Packit |
90a5c9 |
</If>
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
On peut utiliser cette technique dans de nombreux scénarios courant
|
|
Packit |
90a5c9 |
pour remplacer mod_rewrite pour effectuer des actions
|
|
Packit |
90a5c9 |
en fonction d'en-têtes de requêtes ou de réponses, ou de variables
|
|
Packit |
90a5c9 |
d'environnement.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Voir en particulier la documentation sur
|
|
Packit |
90a5c9 |
l'évaluation des expressions pour une vue d'ensemble des types
|
|
Packit |
90a5c9 |
d'expressions que vous pouvez utiliser dans les sections <If> ,
|
|
Packit |
90a5c9 |
ainsi que dans certaines directives.
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
|
|
Packit |
90a5c9 |
Langues Disponibles: en |
|
|
Packit |
90a5c9 |
fr
|
|
Packit |
90a5c9 |
Notice: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 mailing lists.
|
|
Packit |
90a5c9 |
<script type="text/javascript">
|
|
Packit |
90a5c9 |
var comments_shortname = 'httpd';
|
|
Packit |
90a5c9 |
var comments_identifier = 'http://httpd.apache.org/docs/2.4/rewrite/avoid.html';
|
|
Packit |
90a5c9 |
(function(w, d) {
|
|
Packit |
90a5c9 |
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
|
|
Packit |
90a5c9 |
d.write('
|
|
Packit |
90a5c9 |
var s = d.createElement('script');
|
|
Packit |
90a5c9 |
s.type = 'text/javascript';
|
|
Packit |
90a5c9 |
s.async = true;
|
|
Packit |
90a5c9 |
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
|
|
Packit |
90a5c9 |
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
|
|
Packit |
90a5c9 |
}
|
|
Packit |
90a5c9 |
else {
|
|
Packit |
90a5c9 |
d.write('
|
|
Packit |
90a5c9 |
}
|
|
Packit |
90a5c9 |
})(window, document);
|
|
Packit |
90a5c9 |
//--></script>
|
|
Packit |
90a5c9 |
Copyright 2018 The Apache Software Foundation. Autorisé sous Apache License, Version 2.0.
|
|
Packit |
90a5c9 |
Modules | Directives | FAQ | Glossaire | Plan du site <script type="text/javascript">
|
|
Packit |
90a5c9 |
if (typeof(prettyPrint) !== 'undefined') {
|
|
Packit |
90a5c9 |
prettyPrint();
|
|
Packit |
90a5c9 |
}
|
|
Packit |
90a5c9 |
//--></script>
|
|
Packit |
90a5c9 |
</body></html>
|