Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2008, 14h57   #1
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

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

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
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 :
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
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 15h16   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
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 :
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 :
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 15h21   #3
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

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

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
merci pour ton aide
mais tes règles ne fonctionnent pas

j'ai essayé
Code :
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
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 18h13   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
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 :
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 10h43   #5
Membre éprouvé
 
Homme Marwan Rabbaa
Technophile Web
Inscription : mai 2007
Messages : 930
Détails du profil
Informations personnelles :
Nom : Homme Marwan Rabbaa

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

Informations forums :
Inscription : mai 2007
Messages : 930
Points : 412
Points : 412
Envoyer un message via MSN à sliderman Envoyer un message via Yahoo à sliderman
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 :
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
sliderman est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h59.


 
 
 
 
Partenaires

Hébergement Web