Ich versuche, https://www.example.com auf http://www.example.com umzuleiten . Ich habe den folgenden Code in der .htaccess-Datei ausprobiert
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Dieser Code leitet https://example.com erfolgreich an http://www.example.com weiter . Wenn ich jedoch https://www.example.com eingebe, wird im Browser der Fehler "Webseite nicht verfügbar" angezeigt.
Ich habe auch die folgenden 2 Codes ohne Erfolg ausprobiert
Versuch 1
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*):NOSSL$ http://www.example.com/$1 [R=301,L]
Versuch 2
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
Beide oben genannten Versuche schlugen fehl. Irgendwelche Vorschläge?
R=302
wenn Sie nicht dauerhaft machen möchten . Dies brachte mich in Schwierigkeiten, als mein SSL abgelaufen war und ich vorübergehend zurückkehren wollte,http
bevor ich die schmerzhaften Erneuerungsverfahren durchlief.Wenn Ihre Website jedoch nicht über ein Sicherheitszertifikat verfügt, sich in einer gemeinsam genutzten Hosting-Umgebung befindet und Sie keine "Warnung" erhalten möchten, wenn Ihre Website über https angefordert wird, können Sie sie nicht mit htaccess umleiten. Der Grund dafür ist, dass die Warnmeldung ausgelöst wird, bevor die Anforderung überhaupt in die htaccess-Datei eingeht, sodass Sie sie auf dem Server beheben müssen. Gehen Sie zu /etc/httpd/conf.d/ssl.conf und kommentieren Sie den Teil über den virtuellen Server 443. Aber die Chancen stehen gut, dass Ihr Hosting-Anbieter Ihnen nicht so viel Kontrolle gibt. Sie müssten also entweder auf einen anderen Host wechseln oder das SSL kaufen, damit die Warnung nicht ausgelöst wird, bevor Ihr htaccess die Möglichkeit hat, umzuleiten.
quelle
Sie können die folgende Regel verwenden, um von https zu http umzuleiten :
Erklärung:
Prüft , ob das HTTPS ist auf (Request erfolgt über https)
Dann
Leiten Sie jede Anfrage ( https://example.com/foo ) an http://example.com/foo weiter .
$ 1 ist Teil des regulären Ausdrucks im RewriteRule-Muster. Es enthält den Wert, der in (. +) Erfasst wurde. In diesem Fall erfasst es die vollständige request_uri alles nach dem Domänennamen.
[NC, L, R] sind die Flags, NC macht den Uri-Fall senstiv, Sie können in der Anfrage sowohl Groß- als auch Kleinbuchstaben verwenden.
Das L-Flag weist den Server an, die Verarbeitung anderer Regeln zu beenden, wenn die Currunt-Regel übereinstimmt. Es ist wichtig, das L-Flag zu verwenden, um Regelkonflikte zu vermeiden, wenn Sie mehr als nur Regeln in einem Block haben.
Das R-Flag wird verwendet, um eine externe Umleitung durchzuführen.
quelle
quelle
Der Unterschied zwischen http und https besteht darin, dass https-Anforderungen über eine SSL-verschlüsselte Verbindung gesendet werden. Die SSL-verschlüsselte Verbindung muss zwischen dem Browser und dem Server hergestellt werden, bevor der Browser die http-Anforderung sendet.
HTTP-Anforderungen sind tatsächlich HTTP-Anforderungen, die über eine SSL-verschlüsselte Verbindung gesendet werden. Wenn der Server das Herstellen einer SSL-verschlüsselten Verbindung ablehnt, hat der Browser keine Verbindung zum Senden der Anforderung. Der Browser und der Server können nicht miteinander kommunizieren. Der Browser kann die URL, auf die er zugreifen möchte, nicht senden, und der Server kann nicht mit einer Weiterleitung auf eine andere URL antworten.
Das ist also nicht möglich. Wenn Sie auf https-Links antworten möchten, benötigen Sie ein SSL-Zertifikat.
quelle
quelle
Ihr Code ist korrekt. Legen Sie sie einfach in die
<VirtualHost *:443>
Beispiel:
quelle