apache - site - redirect http to https
Como você redireciona HTTPS para HTTP? (7)
Como você redireciona HTTPS para HTTP? Isto é, o oposto do que (aparentemente) todos ensinam.
Eu tenho um servidor em HTTPS para o qual eu paguei uma certificação SSL e um espelho para o qual eu não tenho e manter por apenas para emergências por isso não merece obter uma certificação para.
Nos desktops do meu cliente, tenho alguns atalhos que apontam para http://production_server
e https://production_server
(ambos funcionam). No entanto, sei que, se meu servidor de produção ficar inativo, o encaminhamento de DNS entrará em https://mirror_server
e os clientes que tiverem "https" no atalho estarão olhando para https://mirror_server
(que não funciona) e um grande Internet Explorer 7 tela vermelha de desconforto para minha empresa.
Infelizmente, não posso simplesmente mudar isso no nível do cliente. Esses usuários são muito analfabetos de computador: e é muito provável que surtam erros de "insegurança" de HTTPS (especialmente a maneira como o Firefox 3 eo Internet Explorer 7 lidam com isso hoje em dia: FULL STOP, felizmente, mas não me ajudando aqui LOL).
É muito fácil encontrar soluções Apache para o redirecionamento http-> https , mas, para minha vida, não posso fazer o oposto.
Idéias?
É melhor evitar o uso de mod_rewrite quando puder.
No seu caso, eu substituiria o Rewrite por isso:
<If "%{HTTPS} == 'on'" >
Redirect permanent / http://production_server/
</If>
A diretiva <If>
está disponível apenas no Apache 2.4+, de acordo com este blog aqui .
Com base na resposta do ejunker, esta é a solução que funciona para mim, não em um único servidor, mas em um ambiente de nuvem
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Nenhuma das respostas funciona para mim no site Wordpress, mas depois de obras (é semelhante a outras respostas, mas tem uma pequena mudança)
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Para aqueles que estão usando um arquivo .conf
.
<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>
Tanto quanto eu estou ciente de uma meta atualização simples também funciona sem causar erros:
<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">
Tenha em mente que o mecanismo de reconfiguração só entra em ação assim que a requisição HTTP for recebida - o que significa que você ainda precisará de um certificado, para que o cliente configure a conexão para enviar a solicitação!
No entanto, se a máquina de backup parecer ter o mesmo nome de host (no que se refere ao cliente), não deverá haver motivo para não usar o mesmo certificado da máquina principal de produção.
todo o acima não funcionou quando eu usei cloudflare, este trabalhou para mim:
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
e este definitivamente funciona sem proxies no caminho:
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]