IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[URL Rewriting] Redirection de pages sensibles sur HTTPS


Sujet :

Apache

  1. #1
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut [URL Rewriting] Redirection de pages sensibles sur HTTPS
    Bonjour,

    Je souhaiterais que, lorsque mon utilisateur se connecte sur mon site Apache se charge de rediriger ce dernier en HTTPS. Or HTTPS est plus lent que du HTTP classique. Je souhaite donc avoir du HTTPS uniquement sur les pages "sensibles" : la page d'index (parce que c'est là qu'il saisit ses informations) et le script de login (login.php).

    Voila donc ma conf apache (enfin la partie qui nous interesse)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <IfModule rewrite_module>
    	RewriteEngine on
    	RewriteCond %{REMOTE_PORT}  !^443$
    	RewriteRule ^/(.*) https://%{HTTP_HOST}/%{REQUEST_URI}
    	RewriteCond %{REQUEST_FILENAME}  !^index.php
    	RewriteCond %{REQUEST_FILENAME}  !^login.php
    	RewriteRule ^/(.*) http://%{HTTP_HOST}/%{REQUEST_URI}
    </IfModule>
    je croyais que ce que j'avais écris permettant de tout rediriger uniquement les pages index.php


    mais il s'avère que non ?
    http://aldorande.miniville.fr/ind
    Fedora 8, eclipse 3.3 sur x86_64
    --------------
    Colorer votre code php

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ta première règle fait tout rediriger en HTTPS. Ensuite, REQUEST_FILENAME, contrairement à ce que tu crois, contient le chemin complet du fichier demandé, pas uniquement son nom :
    Citation Envoyé par Doc Apache
    REQUEST_FILENAME
    The full local filesystem path to the file or script matching the request.
    Donc, il faut plutôt faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_FILENAME}  !/index\.php$
    RewriteCond %{REQUEST_FILENAME}  !/login\.php$
    ...
    Mais de toute façon, ta première règle va prendre le dessus et tout rediriger en HTTPS. Pourquoi tu ne prends pas plutôt le problème dans l'autre sens en ne gérant que des exceptions par rapport à index.php et login.php ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Si on demande une page autre que index.php et login.php en HTTPS, on redirige en HTTP
    RewriteCond %{REMOTE_PORT} ^443$
    RewriteCond %{REQUEST_URI} ^!/index\.php$
    RewriteCond %{REQUEST_URI} ^!/login\.php$
    RewriteRule ^/(.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
     
    RewriteCond %{REMOTE_PORT} !^443$
    RewriteRule ^index\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
     
    RewriteCond %{REMOTE_PORT} !^443$
    RewriteRule ^login\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
    Je ne suis pas parfaitement sûr de mes règles, je ne les ai pas testées.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    merci pour ton aide
    mais tes règles ne fonctionnent pas

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <IfModule rewrite_module>
    	RewriteEngine on
    	RewriteCond %{REMOTE_PORT}  ^443$
    	RewriteRule !^/index\.php$ http://%{HTTP_HOST}%{REQUEST_URI}
    	RewriteRule !^/login\.php$ http://%{HTTP_HOST}%{REQUEST_URI}
    	RewriteCond %{REMOTE_PORT}  !^443$
    	RewriteRule ^/(.*) https://%{HTTP_HOST}%{REQUEST_URI}
    </IfModule>
    mais sans succès
    http://aldorande.miniville.fr/ind
    Fedora 8, eclipse 3.3 sur x86_64
    --------------
    Colorer votre code php

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par sliderman Voir le message
    merci pour ton aide
    mais tes règles ne fonctionnent pas
    J'avais prévenu

    J'ai relevé au moins une coquille : dans les premiers RewriteCond, j'ai mis ! après ^ alors qu'il faut le mettre avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Si on demande une page autre que index.php et login.php en HTTPS, on redirige en HTTP
    RewriteCond %{REMOTE_PORT} ^443$
    RewriteCond %{REQUEST_URI} !^/index\.php$
    RewriteCond %{REQUEST_URI} !^/login\.php$
    RewriteRule ^/(.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
     
    # Si on demande /index.php en HTTP, on redirige sur HTTPS
    RewriteCond %{REMOTE_PORT} !^443$
    RewriteRule ^index\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
     
    # Si on demande /login.php en HTTP, on redirige sur HTTPS
    RewriteCond %{REMOTE_PORT} !^443$
    RewriteRule ^login\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    J'avais prévenu

    J'ai relevé au moins une coquille : dans les premiers RewriteCond, j'ai mis ! après ^ alors qu'il faut le mettre avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Si on demande une page autre que index.php et login.php en HTTPS, on redirige en HTTP
    RewriteCond %{REMOTE_PORT} ^443$
    RewriteCond %{REQUEST_URI} !^/index\.php$
    RewriteCond %{REQUEST_URI} !^/login\.php$
    RewriteRule ^/(.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
     
    # Si on demande /index.php en HTTP, on redirige sur HTTPS
    RewriteCond %{REMOTE_PORT} !^443$
    RewriteRule ^index\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
     
    # Si on demande /login.php en HTTP, on redirige sur HTTPS
    RewriteCond %{REMOTE_PORT} !^443$
    RewriteRule ^login\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA]
    tes règles sont fausses, en tout cas elles ne fonctionnent pas chez moi
    http://aldorande.miniville.fr/ind
    Fedora 8, eclipse 3.3 sur x86_64
    --------------
    Colorer votre code php

Discussions similaires

  1. [URL rewriting] Redirection Https
    Par odissey dans le forum Apache
    Réponses: 2
    Dernier message: 17/11/2010, 01h28
  2. [URL rewriting] Redirection page index
    Par Benzz dans le forum Apache
    Réponses: 3
    Dernier message: 16/09/2010, 18h31
  3. [URL rewriting] Redirection http => https
    Par Invité dans le forum Apache
    Réponses: 5
    Dernier message: 15/01/2010, 10h53
  4. Réponses: 2
    Dernier message: 22/08/2008, 17h03
  5. [URL Rewriting] Redirection HTTPS avec exception
    Par grunk dans le forum Apache
    Réponses: 2
    Dernier message: 28/02/2008, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo