Come si reindirizza HTTPS su HTTP?
Domanda
Come si reindirizza HTTPS su HTTP?.Cioè il contrario di quello che (apparentemente) tutti insegnano.
Ho un server su HTTPS per il quale ho pagato una certificazione SSL e un mirror per il quale non l'ho fatto e lo tengo in giro solo per le emergenze, quindi non merita di ottenere una certificazione.
Sui desktop dei miei clienti ho ALCUNE scorciatoie che puntano a http://production_server
E https://production_server
(entrambi funzionano).Tuttavia, so che se il mio server di produzione si guasta, viene attivato l'inoltro DNS e i client che hanno "https" sul collegamento guarderanno https://mirror_server
(che non funziona) e una grossa schermata rossa di disagio di Internet Explorer 7 per la mia azienda.
Sfortunatamente, non posso semplicemente cambiarlo a livello di client.Questi utenti sono molto analfabeti informatici:e molto probabilmente impazziranno nel vedere errori di "insicurezza" HTTPS (specialmente il modo in cui Firefox 3 e Internet Explorer 7 lo gestiscono al giorno d'oggi:PUNTO PUNTO, per fortuna, ma non mi aiuta qui LOL).
Suo molto facile trovare Soluzioni Apache per Reindirizzamento http->https, ma per quanto mi riguarda non posso fare il contrario.
Idee?
Soluzione
Questo non è stato testato ma penso che dovrebbe funzionare usando mod_rewrite
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
Altri suggerimenti
Tieni presente che il motore di riscrittura si attiva solo una volta ricevuta la richiesta HTTP, il che significa che avrai comunque bisogno di un certificato, affinché il client possa impostare la connessione per inviare la richiesta!
Tuttavia, se la macchina di backup sembrerà avere lo stesso nome host (per quanto riguarda il client), non dovrebbero esserci motivi per non poter utilizzare lo stesso certificato della macchina di produzione principale.
In base alla risposta di ejunker, questa è la soluzione che funziona per me, non su un singolo server ma su a nuvola ambiente
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Per coloro che utilizzano a .conf
file.
<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>
Se nessuna delle soluzioni di cui sopra funziona per te (non ha funzionato per me), ecco cosa ha funzionato sul mio server:
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
tutto quanto sopra non ha funzionato quando ho usato cloudflare, questo ha funzionato per me:
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
e questo funziona sicuramente senza proxy nel modo:
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
È meglio evitare di usare mod_rewrite quando puoi.
Nel tuo caso sostituirei Rewrite con questo:
<If "%{HTTPS} == 'on'" >
Redirect permanent / http://production_server/
</If>
IL <If>
la direttiva è disponibile solo in Apache 2.4+ come da questo blog qui.
Nessuna risposta funziona per me sul sito Web Wordpress, ma le seguenti funzionano (è simile ad altre risposte ma presenta un piccolo cambiamento)
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
questo funziona per me.
<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>
assicurati di ascoltare entrambe le porte 80 e 443.
Per quanto ne so, anche un semplice meta aggiornamento funziona senza causare errori:
<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">