23 votes

apache redirige http vers https et www vers non www

En fait, ce que je veux, c'est rediriger toutes les requêtes pour utiliser HTTPS au lieu de http.

C'est ce que j'ai fait dans mon htaccess jusqu'à présent et cela a bien fonctionné : Code :

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</ifModule> 

Aujourd'hui, quelqu'un a remarqué qu'en allant à : http://www.example.com il redirige vers et montre une connexion non sécurisée.

Mon ssl est configuré pour un domaine non www : mydomain.com.

J'ai donc besoin de m'assurer que toutes les requêtes du site sont envoyées vers des sites non www et https : Cela fonctionne bien si je mets exemple.com il redirige vers https://example.com

mais avec www.example.com il va à htts://www.example.com et montre l'erreur

qu'est-ce que je dois ajouter à mon code pour rediriger les www vers les non www et ensuite vers les ssl ?

26voto

Vous devrez réémettre votre certificat à la fois pour www et sans www.

Si quelqu'un se connecte à votre site via un nom de domaine qui n'est pas inclus dans votre nom commun, il recevra un avertissement.

Le processus de négociation ssl se déroule avant toute réponse du serveur (dans votre cas, une redirection), donc dans tous les cas, vos visiteurs recevront un avertissement lors de l'utilisation d'un domaine qui n'est pas dans votre nom commun.

19voto

baynezy Points 2101

Vous pouvez obtenir ce dont vous avez besoin à partir du HTTP_HOST

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

De cette façon, il obtiendra toujours l'hôte sans le sous-domaine.

5voto

Amir Akef Points 261
RewriteEngine On 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]
RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]

2voto

Guest Points 21

Si vous utilisez le compte gratuit de CloudFlare, c'est là le problème. Le compte gratuit de CloudFlare ne prend PAS en charge les certificats SSL. Pour continuer à utiliser le compte gratuit de CloudFlare avec un certificat SSL, il suffit d'aller dans les paramètres DNS de CloudFlare et de retirer le nuage orange de votre domaine et du nom de domaine WWW. Cela résoudra votre problème et fera en sorte que les sites www et non-www soient redirigés vers https.

Veillez également à ajouter ce code à votre fichier .htaccess :

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ensuite, tout devrait fonctionner !

0voto

guest Points 1
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://www.%1%{REQUEST_URI} [L,R=301]

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