Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guih_oliveira10

redirecionamento https > http

Recommended Posts

pessoal tinha meu site publicado em um server que o http era:

 

http://guilherme123.com

 

e o https:

 

https://guilherme123.com

 

só que agora, estou transferindo o meu site para outro servidor, na verdade o guilherme123 era somente para testes.

 

neste novo domínio, o http é?

 

http://patofaminto.com.br

 

e o https:

 

https://patofamint.sslblindado.com

 

os nomes são diferentes, a minha duvida é que no server antigo o código abaixo funcionava e redirecionada de https para http e vice-versa.

agora neste novo ele só redireciona de http para https, e de https para http não funciona.

 

esse aqui quando a pagina é acessada por https, ele redireciona para http (não funcionando, funcionava em outro server):

//A página pode ser acessada somente por HTTP
if($_SERVER['HTTPS'] == 'on'){

$url = 'http://patofaminto.com.br' . $_SERVER['REQUEST_URI'];
header("Location: $url");
exit;

}

 

 

esse aqui quando a página é acessada por http, ele redireciona para https (funcionando ok):

//A página pode ser acessada somente por HTTPS
if($_SERVER['HTTPS'] != 'on'){

$url = 'https://patofamint.sslblindado.com' . $_SERVER['REQUEST_URI'];
header("Location: $url");
exit;

}

 

o navegador informa que há um erro de loop, ou seja, ele redireciona de https para https e não de https para http como quero.

 

 

como faço gente, já tentei de tudo, mais nada.

muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro script vai redirecionar para HTTP, se ele estiver utilizando SSL.

O segundo vai fazer exatamente o inverso: redirecionar para HTTPS, se não estiver usando SSL.

 

Erro de loop = Redirecionamento infinito.. uma página jogando para a outra, sem parar. Entendeu?

 

Dá um echo nesse $_SERVER['HTTPS'] e veja o resultado. Isso faz parte da depuração do código.

 

Só não entendi uma coisa: Você quer usar HTTPS ou HTTP? Tem que se decidir...

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, dei o echo e quando acesso por https ele mostra: on

quando acesso por http não mostra nada.

 

quando ao decidir, é porque tenho várias páginas, algumas vou utilizar http outras https.

durante a navegação ele vai redirecionando para o protocolo correto.

 

exemplo:

 

index.php = http

login.php = https

 

se estiver na index.php e passar para a login.php ele vai me redirecionar de http para https.

se estiver na login.php e passar para a index.php ele vai me redirecionar de https para http.

 

echo que deu pra entender kkklaugh.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes desse trecho

//A página pode ser acessada somente por HTTPS
if($_SERVER['HTTPS'] != 'on'){

 

 

com propósito de testes, faça:

if (headers_sent()){ 
   echo 'oops, headers already sent!!'; exit;
}

//A página pode ser acessada somente por HTTPS
if($_SERVER['HTTPS'] != 'on'){

 

 

se retornar a frase "oops, headers already sent!!", então há algo errado.. algum cabeçalho está sendo enviado antes, causando um conflito or something else.

 

 

obs: Não é a solução definitiva do problema. É apenas uma dica para debugar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, tentei fazer o que você sugeriu e fica do mesmo jeito, aparece no navegador erro de loop.

 

pesquisando na net, encontrei um código php que provavelmente poderia resolver o problema, mais testei e nada adiantou:

 

ini_set('session.cookie_domain','.patofaminto.com.br');

 

acredito que possa ser por ai o problema, mais de tudo que já tentei nada adiantou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

comentário crítico, caso queira ler.

 

Acho que o problema é que você não está sabendo debugar..

Debugar é procurar onde estão erros, de onde se originam

Você deve pensar por exemplo, nos erros mais lógicos e fáceis de se analisar, e por meio de eliminação de erros você vai chegando naquele que está mais próximo, entendeu ? isso é debugar, diganosticar.

 

Debugar não é simplesmente pegar um script jogar ali e dizer "ah não funcionou, continua o mesmo"..

 

Um outro exemplo de algo que demonstra que você está fazendo às cegas, foi esse caso dos cookies.

 

Os cookies são restritos dentro do domínio somente, e no seu caso, o https está num subdomínio de um domínio diferente do usado no http.

Há meios de se compartilhar cookies entre domínios diferentes, mas não é caso.

 

 

 

 

 

Vejamos, no seu primeiro post, você diz:

esse aqui quando a pagina é acessada por https, ele redireciona para http (não funcionando, funcionava em outro server):

//A página pode ser acessada somente por HTTP
if($_SERVER['HTTPS'] == 'on'){

       $url = 'http://patofaminto.com.br' . $_SERVER['REQUEST_URI'];
       header("Location: $url");
       exit;

}

 

esse é o foco do problema.

 

aqui tem uma pista "não funcionando, funcionava em outro server)"

 

ok

 

o que quer dizer com "não funcionando" ?

 

se retorna uma mensagem de erro, qual tipo de erro aparece ?

 

por acaso é o erro 102 ?

 

Error 102 (net::ERR_CONNECTION_REFUSED): The server refused the connection.

 

se for o caso, o erro 102 indica que simplesmente não há suporte https habilitado no server, e logicamente não haverá como fazer redirecionamento algum..

 

isso é apenas um exemplo, se puder esclarecer de forma objetiva alguem poderá ajudá-lo de forma clara e objetiva..

 

 

Note também que dependendo do navegador que utiliza e de como está configurado, a mensagem de erro pode não estar sendo exibida.

Isso também pode provir de configurações do servidor de hospedagem ,o qual pode retornar mensagens de erro menos técnicas ou "user friendly", também por motivos de segurança para evitar expor pistas sobre configurações do server a pessoas mal intensionadas.

 

há uma série de variantes e suas ramificações

 

No post #4 não comentei sobre esse primeiro passo lógico, porque é tão lógico que não fazia muito sentido. Penso que você já deve ter testado isso. Mas por precaução fica aí a dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, muito obrigado por criticar, kkk faz bem pra gente perceber melhor.

 

vejamos bem:

 

tenho um domínio HTTPS do meu site que é: https://patofamint.sslblindado.com

 

esse domínio HTTPS está funcionando corretamente, consigo navegar direitinho, o problema é no código que não redireciona.

 

o meu domínio original HTTP é: http://patofaminto.com.br

 

o problemas é que quando estou navegando em uma página: https://patofamint.sslblindado.com/teste.php

se página teste.php conter o código para redirecionamento para HTTP acontece o seguinte: em vez do navegador redirecionar para http://patofaminto.com.br/teste.php , ele fica dando LOOP no mesmo domínio HTTPS, ou seja, ele não muda de http://patofaminto.com.br para https://patofamint.sslblindado.com

 

por isso ocorre o erro de LOOP, que até o amigo acima explicou o que é.

 

Erro de loop = Redirecionamento infinito.. uma página jogando para a outra, sem parar.

 

lembrando que isso acontece em todos os navegadores, ou seja, deve ser alguma configuração do servidor, e o erro gerado pelo Google Chrome é: 310 (net::ERR_TOO_MANY_REDIRECTS): Houve muitos redirecionamentos.

Firefox: Redirecionamento incorreto.

como citei no primeiro POST, que no antigo no domínio funcionava, era porque os domínios HTTP e HTTPS eram iguais, só trocavam o HTTP e o HTTPS no inicio:

http://guilherme123.com

https://guilherme123.com

 

por isso acho que o problema esteja sendo causado pelo fato de os domínios serem diferentes.

 

enfim, vou tentar debugar melhor, verificar melhor, realmente vou quebrar a cabeça pra descobrir kkk

vou ver o que eu faço.

 

joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente depois de muito tentar, resolvi deixar todas as páginas do meu site em HTTP mesmo, não usarei mais SSL.

 

mas fica ai tipo um DESAFIO para quem quiser tentar resolve essa treta. joia.gif

 

 

muito obrigado a ajuda de vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente depois de muito tentar, resolvi deixar todas as páginas do meu site em HTTP mesmo, não usarei mais SSL.

 

mas fica ai tipo um DESAFIO para quem quiser tentar resolve essa treta. joia.gif

 

 

muito obrigado a ajuda de vocês.

cara então eu tava querendo fazer a mesma coisa q você peguei seu codigo e tentei no meu site ocorreu tudo certo!

você colocou cada um dess script em paginas distintas?

 

ou fez uma condição para executar uma dessas condições?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.