Pergunta

Como você redireciona HTTPS para HTTP?Ou seja, o oposto do que (aparentemente) todos ensinam.

Eu tenho um servidor em HTTPS pelo qual paguei uma certificação SSL e um espelho pelo qual não paguei e mantenho por perto apenas para emergências, por isso não merece obter uma certificação.

Nos desktops dos meus clientes, tenho ALGUNS atalhos que apontam para http://production_server e https://production_server (ambos funcionam).No entanto, eu sei que se meu servidor de produção cair, o encaminhamento de DNS entrará em ação e os clientes que possuem "https" em seu atalho ficarão olhando para https://mirror_server (que não funciona) e uma grande tela vermelha de desconforto do Internet Explorer 7 para minha empresa.

Infelizmente, não posso simplesmente mudar isso no nível do cliente.Esses usuários são muito analfabetos em informática:e é muito provável que surtem ao ver erros de "insegurança" de HTTPS (especialmente a maneira como o Firefox 3 e o Internet Explorer 7 lidam com isso hoje em dia:PONTO COMPLETO, felizmente, mas não me ajudando aqui LOL).

Isso é muito fácil encontrar Soluções Apache para redirecionamento http->https, mas pela minha vida não posso fazer o oposto.

Ideias?

Foi útil?

Solução

Isso não foi testado, mas acho que deve funcionar usando mod_rewrite

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

Outras dicas

Tenha em mente que o mecanismo Rewrite só entra em ação quando a solicitação HTTP é 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 diz respeito ao cliente), não haverá motivo para você não poder usar o mesmo certificado da máquina de produção principal.

Com base na resposta do ejunker, esta é a solução que funciona para mim, não em um único servidor, mas em um nuvem ambiente

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

Para aqueles que estão usando um .conf arquivo.

<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 nenhuma das soluções acima funcionar para você (não funcionaram para mim), aqui está o que funcionou no meu servidor:

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

todos os itens acima não funcionaram quando usei o cloudflare, este funcionou 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]

É melhor evitar usar mod_rewrite quando puder.

No seu caso, eu substituiria o Rewrite por isto:

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

O <If> diretiva está disponível apenas no Apache 2.4+ conforme este blog aqui.

Nenhuma das respostas funciona para mim no site Wordpress, mas as seguintes funcionam (é semelhante a outras respostas, mas tem uma pequena mudança)

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

isso funciona para mim.

<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>

certifique-se de ouvir as portas 80 e 443.

Pelo que sei, uma meta atualização simples também funciona sem causar erros:

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top