apache - site - redirect http to https




Como você redireciona HTTPS para HTTP? (7)

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

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?


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]




https