Estou trabalhando em um site de carrinho de compras e gostaria de redirecionar o usuário para uma página HTTPS quando ele estiver inserindo seus detalhes de faturamento e manter a conexão HTTPS para as próximas páginas até que ele saia.
O que preciso instalar no servidor (estou usando Apache) para fazer isso e como esse redirecionamento pode ser feito a partir do PHP?
if( $_SERVER['HTTPS'] == "off")
para fazer esse código funcionar. Acho que é porque estou no IIS, não no Apache como o OP.Esta é uma boa maneira de fazer isso:
fonte
!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'
sempre será falsa, pois se a última parte for verdadeira, a primeira será falsa.Redirecionando de HTTP para HTTPS com PHP no IIS
Eu estava tendo problemas para obter o redirecionamento para HTTPS para funcionar em um servidor Windows que executa a versão 6 do MS Internet Information Services (IIS) . Estou mais acostumado a trabalhar com o Apache em um host Linux, então procurei ajuda na Internet e essa foi a pergunta do Stack Overflow de melhor classificação quando pesquisei “redirecionamento de php de http para https” . No entanto, a resposta selecionada não funcionou para mim.
Após algumas tentativas e erros, descobri que, com o IIS,
$_SERVER['HTTPS']
está definido comooff
para conexões não-TLS. Achei que o código a seguir deveria ajudar qualquer outro usuário do IIS que chegar a essa questão por meio de mecanismo de pesquisa.Edit : De outra resposta Stack Overflow , uma solução mais simples é verificar
if($_SERVER["HTTPS"] != "on")
.fonte
apache
, postei esta resposta para o benefício de outros usuários do IIS (semelhante à situação em que eu estava) que podem encontrar esta página através do mecanismo de busca. Eu concordo com a visão de que as respostas são para o benefício da comunidade como um todo e não apenas para o OP.Você sempre pode usar
para redirecionar para o URL de salvamento.
Mas eu recomendaria fazer isso por .htaccess e as regras de reescrita do Apache.
fonte
Em meu servidor beanstalk AWS, não vejo a variável $ _SERVER ['HTTPS']. Vejo $ _SERVER ['HTTP_X_FORWARDED_PROTO'] que pode ser 'http' ou 'https', então se você estiver hospedando na AWS, use isto:
fonte