282 votes

Rediriger toutes les demandes de pages HTTP vers HTTPS

J'essaie de rediriger toutes les requêtes HTTP non sécurisées sur mon site (par exemple, http://www.example.com ) vers HTTPS ( https://www.example.com ). J'utilise btw PHP. Puis-je faire cela dans .htaccess?

330voto

ssc Points 1813

La documentation Apache recommande de ne pas utiliser de réécriture:

Pour rediriger les URL http vers https, procédez comme suit:

 <VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost >

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
</VirtualHost >
 

Cet article n’a peut-être été évoqué qu’après que la question a été posée et répondue, mais semble être la solution actuelle.

294voto

Reese Moore Points 6213
 RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 

La source

35voto

Bruno Points 47560

Comme je le disais dans cette question, je vous suggère de vous éviter de rediriger toutes les requêtes HTTP à leur équivalent HTTPS à l'aveuglette, car il peut causer une fausse impression de sécurité. Au lieu de cela, vous devriez probablement vous rediriger la "racine" de votre site HTTP à la racine de votre site en HTTPS et lien à partir de là, seulement pour HTTPS.

Le problème est que si un lien ou un formulaire sur le site en HTTPS permet au client d'envoyer une demande à l'adresse HTTP du site, son contenu sera visible, avant la redirection.

Par exemple, si l'une de vos pages servi par le protocole HTTPS est une forme qui, dit - <form action="http://example.com/doSomething"> et envoie des données qui ne doivent pas être envoyés en clair, le navigateur va d'abord envoyer la demande complète (y compris une entité, si c'est un POSTE) à l'adresse HTTP du site en premier. La redirection sera immédiatement envoyé au navigateur et, depuis un grand nombre d'utilisateurs de désactiver ou d'ignorer les mises en garde, il est susceptible d'être ignoré.

Bien sûr, l'erreur de fournir les liens qui devrait être le site en HTTPS, mais qui finissent par être pour le site HTTP peut causer des problèmes dès que vous obtenez quelque chose à l'écoute sur le port HTTP sur la même adresse IP que votre site en HTTPS. Cependant, je pense garder les deux sites "miroir" seulement augmente les chances de faire des erreurs, que vous avez tendance à faire l'hypothèse qu'il s'auto-corriger de lui-même en redirigeant l'utilisateur vers HTTPS, alors qu'il est souvent trop tard. (Il y a eu des discussions similaires à cette question.)

18voto

GiorgosK Points 1

J'ai découvert que le meilleur moyen pour https et www sur le domaine est

 RewriteCond %{HTTPS} off 
RewriteCond %{HTTPS_HOST} !^www.cheapcarhire.gr$ [NC]
RewriteRule ^(.*)$ https://www.cheapcarhire.gr/$1 [L,R=301]
 

4voto

Ajoutez le code suivant au fichier .htaccess:

 Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://[your domain name]%{REQUEST_URI} [R,L]
 

Où [votre nom de domaine] est le nom de domaine de votre site Web.

Vous pouvez également rediriger des dossiers spécifiques hors de votre nom de domaine en remplaçant la dernière ligne du code ci-dessus par:

 RewriteRule ^ https://[your domain name]/[directory name]%{REQUEST_URI} [R,L]
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X