24 Stimmen

Apache-Umleitung von http auf https und von www auf nicht www

Im Grunde, was ich will, ist umleiten alle Anfrage zu HTTPS statt http verwenden

Ich habe dies in meiner htaccess so weit und es funktionierte gut: Code:

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

Heute ist jemandem aufgefallen, dass bei der Suche nach: http://www.example.com wird er umgeleitet und zeigt eine unsichere Verbindung an.

Mein SSL ist für eine Nicht-WWW-Domäne eingerichtet: mydomain.com

Ich muss also sicherstellen, dass alle Website-Anfragen an nicht www und https gesendet werden: Es funktioniert gut, wenn ich example.com eingebe, wird es weitergeleitet zu https://example.com

aber mit www.example.com geht es zu htts://www.example.com und zeigt den Fehler

Was muss ich zu meinem Code hinzufügen, um www auf nicht www und dann auf ssl umzuleiten? ?

25voto

Pierre-Olivier Punkte 3086

Sie müssen Ihr Zertifikat sowohl für www als auch für ohne www neu ausstellen.

Wenn jemand eine Verbindung zu Ihrer Website über einen Domänennamen herstellt, der nicht in Ihrem allgemeinen Namen enthalten ist, wird er eine Warnung erhalten.

Der ssl-Verhandlungsprozess findet statt vor jede Antwort des Servers (in Ihrem Fall eine Weiterleitung), so dass Ihre Besucher in jedem Fall eine Warnung erhalten, wenn sie eine Domäne verwenden, die nicht in Ihrem gemeinsamen Namen enthalten ist.

19voto

baynezy Punkte 6193

Was Sie brauchen, können Sie der HTTP_HOST

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

Auf diese Weise erhält er den Host immer ohne die Subdomain.

6voto

Amir Akef Punkte 321
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 Punkte 21

Wenn Sie das kostenlose Konto von CloudFlare verwenden, ist das das Problem. Das kostenlose Konto von CloudFlare unterstützt KEINE SSL-Zertifikate. Um das kostenlose Konto von CloudFlare weiterhin mit einem SSL-Zertifikat zu nutzen, gehen Sie einfach zu den DNS-Einstellungen in CloudFlare und entfernen Sie die orangefarbene Wolke von Ihrer Domain und vom cName WWW. Das wird Ihr Problem beheben und dazu führen, dass sowohl www als auch non-www auf https umgeleitet werden.

Fügen Sie außerdem diesen Code in Ihre .htaccess-Datei ein:

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

Dann sollte alles funktionieren!

1voto

Dadurch werden alle Ihre www-Websites auf nicht-www umgeleitet und gesichert, wenn Sie die CERTBOT-Datei für jede Domain-Konf-Datei ausgefüllt haben. Fügen Sie dies in /etc/apache2/apache2.conf im Abschnitt Verzeichnis /www ein:

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

Es besteht keine Notwendigkeit, eine www-Domäne mit CERTBOT zu versehen, nachdem dieser Code eingefügt wurde. Wählen Sie einfach die Domain.com. Sie brauchen keine htaccess-Dateien. Sie können durch die Auswahl AllowOverride None eingeschränkt werden.

Denken Sie daran, apache neu zu starten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X