it-swarm.dev

htaccess erzwingt https und leitet www an nicht-www um, aber keine anderen Subdomains

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.

17
sub_lunar

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]
10
anubhava

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!

22
RCheesley
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.

2
starkeen

Erzwingen mit HTTPS

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

Www zum nicht www zwingen

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_Host} ^www.bewebdeveloper.com$
RewriteRule ^(.*) http://bewebdeveloper.com/$1  [QSA,L,R=301]
1
rachid

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

0
Simon Ilett

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/
0
Chetabahana