Hoe kan jy lei HTTPS na http?
Vra
Hoe doen jy lei HTTPS HTTP ?. Dit wil sê die teenoorgestelde van wat (skynbaar) almal leer.
Ek het 'n bediener op HTTPS waarvoor ek betaal 'n SSL sertifisering vir en 'n spieël waarvoor ek nie en hou al vir net vir noodgevalle sodat dit nie meriete om 'n sertifisering vir.
Op desktops my kliënt se ek het 'n paar kortpaaie wat verwys na http://production_server
en https://production_server
(albei werk). Maar ek weet dat as my produksie bediener gaan af, DNS dan stuur skop in en daardie kliënte wat het "https" op hul kortpad sal staar na https://mirror_server
(wat nie werk nie) en 'n groot vet Internet Explorer 7 rooi skerm van uneasyness vir my maatskappy.
Ongelukkig kan ek nie net skakel dit om na die kliënt vlak. Hierdie gebruikers is baie rekenaar ongeletterd en is baie geneig om uit te freak uit sien HTTPS "onsekerheid" foute (veral die manier Firefox 3 en Internet Explorer 7 handvatsel dit deesdae: punt, soort van gelukkig, maar my nie hier help LOL).
Dit is baie maklik om uit te vind Apache oplossings vir http-> https verwysing , maar vir die lewe van my Ek kan die teenoorgestelde doen nie
.Idees?
Oplossing
Dit is nog nie getoets, maar ek dink dit behoort te werk met behulp van mod_rewrite
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
Ander wenke
Hou in gedagte dat die Herskryf enjin skop net een keer die HTTP-versoek ontvang is - wat beteken dat jy sal nog 'n sertifikaat nodig, ten einde vir die kliënt om die opstel van die verbinding met die versoek stuur oor
Maar as die Friends masjien sal verskyn met dieselfde masjien naam het (so ver as die kliënt is bekommerd), dan moet daar geen rede waarom jy kan dieselfde sertifikaat as die belangrikste produksie masjien nie gebruik word.
Op grond van antwoord ejunker se, dit is die oplossing werk vir my, nie op 'n enkele bediener, maar op 'n wolk omgewing
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Vir diegene wat met behulp van 'n .conf
lêer.
<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>
As een van die opsies oplossings vir jou werk (hulle het nie vir my) hier is wat gewerk het op my bediener:
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
al die bogenoemde nie werk nie wanneer ek gebruik cloudflare, hierdie een het vir my gesê:
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
en hierdie een werk beslis sonder gevolmagtigdes in die pad:
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Dit is beter om te verhoed dat die gebruik van mod_rewrite wanneer jy kan.
In jou geval sou ek die Herskryf vervang met die volgende:
<If "%{HTTPS} == 'on'" >
Redirect permanent / http://production_server/
</If>
Die <If>
richtlijn is hier slegs beskikbaar in Apache 2.4+ soos per die blog .
Nie een van die antwoord vir my werk op Wordpress webwerf, maar volgende werke (dit is soortgelyk aan ander antwoorde, maar het 'n bietjie verandering)
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
dit werk vir my.
<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>
seker wees om beide hawens 80 en 443 te luister.
Sover ek weet van 'n eenvoudige meta verfris werk ook sonder dat foute:
<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">