Blame docs/manual/rewrite/avoid.html.fr.utf8

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 > Rewrite

Quand 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
    correspondance
  • Contrôle d'accès
  • Serveurs virtuels
  • Serveurs mandataires
  • Utilisation de RewriteMap
  • Techniques avancées
  • Commentaires
  • Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Redirection simple

    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
    top
    Packit 90a5c9
    Packit 90a5c9

    Alias d'URL

    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 Alias

    Alias "/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
    top
    Packit 90a5c9
    Packit 90a5c9

    Hébergement virtuel

    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
    top
    Packit 90a5c9
    Packit 90a5c9

    Mandat simple

    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 RewriteRules 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
    top
    Packit 90a5c9
    Packit 90a5c9

    Test de variables d'environnement

    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
    top

    Commentaires

    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('
    <\/div>');
    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('
    Comments are disabled for this page at the moment.<\/div>');
    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>