Ir para conteúdo

POWERED BY:

Arquivado

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

Thiago Moraes

loop ao redirecionar URL

Recommended Posts

Ola, estou tentando redirecionar uma pagina de http para https mas esta dando loop infinito. Segue o código que estou usando:

if (isset($_GET['page']) && ($_GET['page'] == "user")) {
$new_url = "https://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
header("Location: $new_url");
exit;
}

Como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

if (isset($_GET['page']) && ($_GET['page'] == "user")) {	
	
	if(stripos($_SERVER['SERVER_PROTOCOL'],'https') !== true){
		$new_url = "https://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
		header("Location: $new_url");
		exit;
	}
	
}

De uma lida !

 

http://php.net/manual/pt_BR/reserved.variables.server.php

http://php.net/manual/pt_BR/function.stripos.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz este https esta ativo?


Verifica ai $_SERVER['HTTPS']

if(isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on'){
    echo 'ON';
} else {
    echo 'OFF';
}   

Com estas funções você monta a verificação!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Identifiquei o problema...tenho um plugin (Joomla) gerenciando o redirecionamento https. Existe uma forma de desabilitar o SSL via PHP, e inserir o código acima para usar somente nas URLs que eu definir? Não da pra fazer essas alterações pelo plugin, teria que ser manualmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desconheço.
Porque não passa um parâmetro por get, ou use uma variável de sessão para controlar este fluxo.


if (!isset($_SESSION['SERVER_PROTOCOL'])) {
	$_SESSION['SERVER_PROTOCOL'] === true;
	$new_url = "https://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
	header("Location: $new_url");
	exit;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode usar o .htaccess pra isso. Coloque um o código abaixo no seu .htaccess e o SSL será desabilitado para todas as páginas, exceto as que você indicar dentro dos parenteses na segunda linha do código:

RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/(pagina1|pagina1)\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Ou utilize o código abaixo para forçar a ativação do SSL e redirecionamento para HTTPS somente em determinadas pastas:

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

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.