Je sais qu'il existe de nombreux threads similaires, mais aucun ne semble correspondre exactement à mon problème. Voici ce que j'essaie de faire:
(1) http://www.mydomain.com/ -> https://mydomain.com/
(2) http://mydomain.com/ -> https://mydomain.com/
(3) https://www.mydomain.com -> https://mydomain.com/
Idéalement, j'aimerais également couvrir la situation si j'ajoute un jour plus de sous-domaines, pour qu'ils se comportent automatiquement comme suit (de préférence d'une manière générique qui fonctionne pour tout sous-domaine que j'ajoute).
(4) http://sub.mydomain.com/ -> https://sub.mydomain.com/
À ce stade, je me demande s’il est même possible de créer un fichier .htaccess unique qui réponde à tous les besoins, même si j’avoue que je comprends les regex, mais je ne suis pas exactement un mod_rewrite uberpro.
Voici les solutions que j'ai déjà essayées:
Mon certificat SSL couvre le sous-domaine www. Par conséquent, je ne cherche pas de solution d'erreur de "connexion non approuvée", je sais que ce n'est pas possible.
Mettez ce code dans votre fichier DOCUMENT_ROOT/.htaccess
:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{ENV:HTTPS} off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{HTTP_Host} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301,NE]
J'ai trouvé que la plupart des suggestions n'étaient pas compréhensibles lorsque vous aviez quelque chose qui était https://www.example.com et qui redirigeait vers https://example.com .
Ce qui suit a fonctionné pour toutes les permutations:
RewriteEngine On
# match any URL with www and rewrite it to https without the www
RewriteCond %{HTTP_Host} ^(www\.)(.*) [NC]
RewriteRule (.*) https://%2%{REQUEST_URI} [L,R=301]
# match urls that are non https (without the www)
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} !^(www\.)(.*) [NC]
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
J'espère que cela aide quelqu'un!
RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www\.([^.]+\.[^.]+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301,NE]
Ce script va rediriger
à
tout en préservant le sous-domaine.
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_Host} ^www.bewebdeveloper.com$
RewriteRule ^(.*) http://bewebdeveloper.com/$1 [QSA,L,R=301]
Aucun des exemples ne fonctionnait pour moi, ils semblaient juste rester coincés dans une boucle, les travaux suivants cependant.
# match any URL with www and rewrite it to https without the www
RewriteCond %{HTTP_Host} ^(www\.)(.*) [NC]
RewriteRule (.*) https://%2%{REQUEST_URI} [R=301,L]
# match non https and redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
L'ordre importe, cela empêchera dans certains cas une 3ème redirection.
Si vous souhaitez utiliser un sous-domaine (autre que www.), Supprimez simplement le premier jeu de règles.
Donc, pour les sous-domaines, tout ce dont vous avez besoin est
# match non https and redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
J'utilise les services Cloudways et j'ai trouvé que c'était la seule chose qui fonctionne
J'ai trouvé que la réponse suivante correspondrait à votre besoin:
www à non-www avec https mais pas d'autre sous-domaines
RewriteEngine on
RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
Remplir toutes les trois (3) conditions:
(1) http://www.example.com/ -> https://example.com/
(2) http://example.com/ -> https://example.com/
(3) https://www.example.com -> https://example.com/
mais pas d'autre sous-domaines que www
comme ceci:
(4) http://others.example.com -> https://others.example.com/
(5) https://others.example.com -> https://others.example.com/