Ich weiß, dass es viele ähnliche Threads gibt, aber keiner von ihnen scheint genau zu meinem Problem zu passen. Folgendes versuche ich zu tun:
(1) http://www.mydomain.com/ -> https://mydomain.com/
(2) http://mydomain.com/ -> https://mydomain.com/
(3) https://www.mydomain.com -> https://mydomain.com/
Im Idealfall möchte ich auch die Situation abdecken, wenn ich weitere Subdomains hinzufügen möchte, um sich automatisch wie die folgende zu verhalten (vorzugsweise auf eine generische Art und Weise, die für jede von mir hinzugefügte Subdomain funktioniert).
(4) http://sub.mydomain.com/ -> https://sub.mydomain.com/
An dieser Stelle frage ich mich, ob es überhaupt möglich ist, eine einzige .htaccess-Datei zu erstellen, die alles tut, was ich brauche, obwohl ich zugeben muss, dass ich Regex verstehen kann, aber ich bin nicht gerade ein mod_rewrite uberpro.
Hier sind die Lösungen, die ich bereits ausprobiert habe:
Mein SSL-Zertifikat bezieht sich auf die www-Subdomain. Daher suche ich nicht nach einer Lösung für eine nicht vertrauenswürdige Verbindung. Ich weiß, dass dies nicht möglich ist.
Fügen Sie diesen Code in Ihre DOCUMENT_ROOT/.htaccess
-Datei ein:
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]
Ich fand, dass die meisten Vorschläge nicht auffielen, wenn Sie etwas hatten, das https://www.example.com war und auf https://example.com umleitete.
Für alle Permutationen funktionierte Folgendes:
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]
Hoffe das hilft jemandem!
RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www\.([^.]+\.[^.]+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301,NE]
Dieses Skript wird umgeleitet
zu
während die Subdomain erhalten bleibt.
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]
Keines der Beispiele funktionierte für mich, sie schienen einfach in einer Schleife zu stecken, die folgenden Arbeiten jedoch.
# 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]
Die Reihenfolge ist wichtig, in manchen Fällen wird eine dritte Weiterleitung verhindert.
Wenn Sie eine Subdomain (etwas anderes als www.) Verwenden möchten, entfernen Sie einfach den ersten Regelsatz.
Für Subdomains brauchen Sie also nur
# match non https and redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
Ich nutze Cloudways-Dienste und habe festgestellt, dass dies das einzige ist, was funktioniert
Ich habe festgestellt, dass die folgende Antwort Ihrer Anforderung entsprechen würde:
www an nicht-www mit https aber keine anderen Subdomains
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]
Erfülle alle drei (3) Bedingungen:
(1) http://www.example.com/ -> https://example.com/
(2) http://example.com/ -> https://example.com/
(3) https://www.example.com -> https://example.com/
aber keine anderen Subdomains als www
wie folgt:
(4) http://others.example.com -> https://others.example.com/
(5) https://others.example.com -> https://others.example.com/