HTTPS-Weiterleitung mit .htaccess erzwingen
Erzwingen Sie HTTPS per .htaccess auf Apache: alle Zugriffe, eine Domain oder Ordner per 301-Weiterleitung, dazu Nginx und der Test.
Nach der Installation eines SSL/TLS-Zertifikats antwortet Ihre Website sowohl auf http:// als auch auf https://. Erzwingen Sie HTTPS, damit jeder Besucher und jede Suchmaschine die verschlüsselte Version nutzt. Unter Apache richten Sie die Weiterleitung von HTTP auf HTTPS mit Rewrite-Regeln in der Datei .htaccess ein. Warum das wichtig ist, erfahren Sie unter warum Sie HTTP auf HTTPS umleiten sollten.
Bevor Sie beginnen
- Ein gültiges SSL/TLS-Zertifikat ist installiert, und
https://yourdomain.comlädt ohne Browserwarnung. - Apache hat
mod_rewriteaktiviert. Unter Debian oder Ubuntu führen Siesudo a2enmod rewriteaus und starten Apache neu. - Die Einstellung
AllowOverrideIhrer Website erlaubt.htaccess-Regeln.
Alle Zugriffe per .htaccess-Weiterleitung auf HTTPS umleiten
Öffnen Sie die Datei .htaccess im Dokumentenstammverzeichnis (Document Root) Ihrer Website, zum Beispiel public_html. Erstellen Sie die Datei, falls sie nicht existiert. Fügen Sie diese Zeilen möglichst weit oben ein:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]R=301 macht die Weiterleitung dauerhaft, damit Browser und Suchmaschinen auf die HTTPS-URL umstellen.
HTTPS für eine Domain erzwingen
Wenn zwei Domains dieselbe Website ausliefern und nur eine davon umgeleitet werden soll:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain1\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Ersetzen Sie yourdomain1.com durch Ihre Domain.
HTTPS für bestimmte Ordner erzwingen
Um nur bestimmte Ordner umzuleiten, tragen Sie diese in die Regel ein:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(folder1|folder2|folder3)(/.*)?$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Ersetzen Sie die Ordnernamen durch Ihre eigenen.
HTTPS hinter einem Proxy oder CDN erzwingen
Wenn Cloudflare oder ein Load Balancer TLS vor Apache beendet, ist %{HTTPS} immer aus, und die Regel oben erzeugt eine Weiterleitungsschleife. Prüfen Sie stattdessen den weitergeleiteten Header X-Forwarded-Proto:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Stellen Sie bei Cloudflare außerdem den SSL/TLS-Modus auf Full oder Full (strict) ein, nicht auf Flexible.
HTTPS unter Nginx erzwingen
Nginx liest keine .htaccess-Dateien. Fügen Sie einen eigenen Server-Block für Port 80 hinzu, der alles weiterleitet:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}Testen Sie die Konfiguration mit sudo nginx -t und laden Sie Nginx danach mit sudo systemctl reload nginx neu.
Die Weiterleitung testen
Führen Sie dies auf einem beliebigen Computer aus:
curl -I http://yourdomain.com/Die Antwort muss 301 Moved Permanently und einen Location:-Header enthalten, der mit https:// beginnt. Leeren Sie den Browser-Cache, bevor Sie im Browser testen, da Browser dauerhafte Weiterleitungen zwischenspeichern.
