wake-up-neo.net

.htaccess http umleiten zu https

Ich habe eine alte URL (www1.test.net) und möchte sie an https://www1.test.net weiterleiten.
Ich habe unser SSL-Zertifikat auf meiner Website implementiert und installiert.
Dies ist meine alte Datei .htaccess:

RewriteEngine On
RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]

Wie kann ich meine .htaccess-Datei so konfigurieren, dass die URL automatisch zu https umgeleitet wird?
Vielen Dank!

55

Update 2016

Da diese Antwort einige Beachtung findet, möchte ich auf einen empfohlenen Weg bei der Verwendung von virtuellen Hosts hinweisen: Apache: SSL umleiten

<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
   DocumentRoot /usr/local/Apache2/htdocs
   SSLEngine On
# etc...
</VirtualHost>

Alte Antwort, gehackte Sache Wenn Ihr SSL-Port nicht auf 80 eingestellt ist, wird dies funktionieren:

RewriteEngine on

# force ssl
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Beachten Sie, dass dies Ihre erste Regel zum Umschreiben sein sollte.

Edit: Dieser Code bewirkt Folgendes. RewriteCond (ition) überprüft, ob der ServerPort der Anforderung 80 ist (dies ist der Standard-HTTP-Port. Wenn Sie einen anderen Port angeben, müssen Sie die Bedingung darauf anpassen). Wenn ja, stimmen wir die gesamte URL (.*) ab und leiten sie an eine https-url weiter. %{SERVER_NAME} kann durch eine bestimmte URL ersetzt werden, aber auf diese Weise müssen Sie den Code für andere Projekte nicht ändern. %{REQUEST_URI} ist der Teil der URL nach der TLD (Top-Level-Domain). Sie werden also dorthin weitergeleitet, wo Sie herkommen, jedoch als https.

91
Jojo

Ich verwende Folgendes, um alle Seiten meiner Domain erfolgreich von http nach https umzuleiten:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

Beachten Sie, dass diese Weiterleitung mithilfe der 301 'permanently moved'-Weiterleitung erfolgt, die Ihnen hilft, Ihre SEO-Rankings zu übertragen. 

So leiten Sie mit der 302 'temporarily moved'-Änderung [R=302,L] um

104
Bradley Flood

Dies ist das beste für www und für https-, Proxy- und nicht Proxy-Benutzer.

RewriteEngine On

### WWW & HTTPS

# ensure www.
RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]

# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

### WWW & HTTPS
31
llioor

Ich erzwinge das https mit folgendem Code:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
4
Arda

Wenn die HTTPS/SSL-Verbindung am Load Balancer beendet wird und der gesamte Datenverkehr an Instanzen an Port 80 gesendet wird, führt die folgende Regel zur Umleitung des nicht sicheren Datenverkehrs.

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

Stellen Sie sicher, dass das Modul mod_rewrite geladen ist.

4
Eneko Alonso

Auf der Suche nach dem besten Weg zum Weiterleiten habe ich Folgendes gefunden (von html5boilerplate)

# ----------------------------------------------------------------------
# | HTTP Strict Transport Security (HSTS)                              |
# ----------------------------------------------------------------------

# Force client-side SSL redirection.
#
# If a user types `example.com` in their browser, even if the server
# redirects them to the secure version of the website, that still leaves
# a window of opportunity (the initial HTTP connection) for an attacker
# to downgrade or redirect the request.
#
# The following header ensures that browser will ONLY connect to your
# server via HTTPS, regardless of what the users type in the browser's
# address bar.
#
# (!) Remove the `includeSubDomains` optional directive if the website's
# subdomains are not using HTTPS.
#
# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
# https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1
# http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx

Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"

Vielleicht hilft es 2017 jemandem! :)

4
LIIT

Fügen Sie diesen Code in Ihre .htaccess-Datei ein. Und es sollte funktionieren

RewriteCond %{HTTP_Host} yourDomainName\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://yourDomainName.com/$1 [R,L]
2
Pallavi

Ich hatte auch ein Problem mit der Weiterleitung. Ich habe alles probiert, was auf Stackoverflow vorgeschlagen wurde. Der einzige Fall, den ich selbst gefunden habe, ist:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
1
Denys Zaiats

Fügen Sie diesen Code am Ende Ihrer .htaccess-Datei hinzu

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
0
Muthu Kumaran

Hinzufügen der folgenden Informationen am oberen Rand des .htaccess

RewriteEngine On
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
0
user2486706