Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?Continua dando loop de redirecionamento :(
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!
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.
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;
}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]
De uma lida !
http://php.net/manual/pt_BR/reserved.variables.server.php
http://php.net/manual/pt_BR/function.stripos.php