Frage

Wie leitet man HTTPS zu HTTP um?Das heißt, das Gegenteil von dem, was (scheinbar) jeder lehrt.

Ich habe einen HTTPS-Server, für den ich eine SSL-Zertifizierung bezahlt habe, und einen Mirror, für den ich keinen habe, und behalte ihn nur für Notfälle, daher lohnt es sich nicht, dafür eine Zertifizierung zu erhalten.

Auf den Desktops meines Clients habe ich EINIGE Verknüpfungen, die darauf verweisen http://production_server Und https://production_server (beide arbeiten).Ich weiß jedoch, dass, wenn mein Produktionsserver ausfällt, die DNS-Weiterleitung aktiviert wird und die Clients, deren Verknüpfung „https“ enthält, anstarren https://mirror_server (was nicht funktioniert) und ein großer, fetter Internet Explorer 7-roter Bildschirm voller Unbehagen für mein Unternehmen.

Leider kann ich das nicht einfach auf Client-Ebene umstellen.Diese Benutzer sind sehr Computer-Analphabeten:und es ist sehr wahrscheinlich, dass sie ausflippen, wenn sie HTTPS-Unsicherheitsfehler sehen (insbesondere die Art und Weise, wie Firefox 3 und Internet Explorer 7 heutzutage damit umgehen:VOLLSTÄNDIG, zum Glück, aber das hilft mir hier nicht, LOL).

Es ist sehr leicht finden Apache-Lösungen für http->https-Umleitung, aber ich kann beim besten Willen nicht das Gegenteil tun.

Ideen?

War es hilfreich?

Lösung

Dies wurde nicht getestet, aber ich denke, dass dies mit mod_rewrite funktionieren sollte

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Andere Tipps

Beachten Sie, dass die Rewrite-Engine erst aktiviert wird, wenn die HTTP-Anfrage empfangen wurde. Das bedeutet, dass Sie noch ein Zertifikat benötigen, damit der Client die Verbindung zum Senden der Anfrage aufbauen kann!

Wenn jedoch der Backup-Computer den gleichen Hostnamen zu haben scheint (für den Client), sollte es keinen Grund geben, nicht dasselbe Zertifikat wie der Hauptproduktionscomputer zu verwenden.

Basierend auf der Antwort von Ejunker ist dies die Lösung, die für mich funktioniert, nicht auf einem einzelnen Server, sondern auf einem Wolke Umgebung

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Für diejenigen, die a verwenden .conf Datei.

<VirtualHost *:443>
    ServerName domain.com
    RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/domain.crt
    SSLCertificateKeyFile /etc/apache2/ssl/domain.key
    SSLCACertificateFile /etc/apache2/ssl/domain.crt

</VirtualHost>

Wenn bei Ihnen keine der oben genannten Lösungen funktioniert (bei mir nicht), dann ist hier, was auf meinem Server funktioniert hat:

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

All das oben Genannte hat nicht funktioniert, als ich Cloudflare verwendet habe. Dieses hier hat bei mir funktioniert:

RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

und dieses funktioniert definitiv ohne Proxys in der Art und Weise:

RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Es ist besser, die Verwendung von mod_rewrite zu vermeiden, wenn Sie können.

In Ihrem Fall würde ich das Rewrite durch Folgendes ersetzen:

    <If "%{HTTPS} == 'on'" >
            Redirect permanent / http://production_server/
    </If>

Der <If> Die Direktive ist daher nur in Apache 2.4+ verfügbar bloggen Sie hier.

Keine der Antworten funktioniert für mich auf der Wordpress-Website, aber die folgenden funktionieren (sie ähneln anderen Antworten, haben aber eine kleine Änderung).

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Das funktioniert bei mir.

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
    Redirect "https://www.example.com/" "http://www.example.com/"
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    # ... 
</VirtualHost>

Achten Sie darauf, beide Ports 80 und 443 abzuhören.

Soweit mir bekannt ist, funktioniert ein einfacher Meta-Refresh auch ohne Fehler:

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top