Como redirecionar o site para HTTPS de forma correta

Saiba como redirecionar o site para HTTPS e ativar SSL

nesta postagem vamos ensinar voc√™ a redirecionar o site para HTTPS e ativar SSL. H√° muitas explica√ß√Ķes para voc√™ poder redirecionar o seu Web Site, para HTTPS, quando instala um certificado SSL. No entanto, muitos podem n√£o funcionar com todos os testes e seu site acaba sendo visto como n√£o seguro, por alguns navegadores.

Vamos ser rápidos e práticos, nesta postagem e mostrar duas formas fáceis para você redirecionar o site para HTTPS e ativar SSL, para todas as páginas.

Primeira opção para Saiba como redirecionar site para HTTPS

Talvez o código a seguir, apenas funcione parcialmente.

E já li em muitos sites grandes na web e aconselham que você utilize o código abaixo, no arquivo .htaccess. Mas em um teste, ele funcionou parcialmente. Para vê-lo funcionando, insira no arquivo .htaccess do seu servidor Apache.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Por que funciona parcialmente?

1 РSe o usuário digitar o site sem .https ele vai abrir normalmente sem o SSL. Se você adicionou outro código, para seu site abrir apenas com www, exemplo: www.seusite.com este código não vai alterar para .https, quando um usuário digigatr sem o www.

2 РOs buscadores sabem disso. Então, eles vão indexar páginas com e sem SSL, o que dificulta a compreensão dos usuários e do próprio navegador.

Fa√ßa os testes da seguinte maneira e tire suas conclus√Ķes.

Copie o cole o código acima, no arquivo .htaccess que fica na raiz do seu servidor Apache. Em seguida tente abrir seu site das seguintes formas:

seusite.com
www.seusite.com
http://seusite.com
http://www.seusite.com
https://seusite.com
https://www.seusite.com

Observe, que em algumas destas op√ß√Ķes o seu site, que tem certificado SSL instalado, vai abrir sem o .https e o navegador aceita normalmente.

Nota: estes testes foram feitos usando navegador Chrome, com certificados de validação de domínio. Não foram feitos os testes com certificados de validação estendida. Talvez, tenha resultados diferentes.

Códigos que vão funcionar corretamente com .https

Opção 1: arquivo .htaccess

Se o seu site funcionou corretamente com o código acima, ótimo. Você não precisa alterar, caso contrário, adicione o seguinte código no seu arquivo .htaccess

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.seusite.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R,L]

Nota: lembre-se de alterar seusite.com para o nome do seu dom√≠nio, com a extens√£o correta. E verifique com seu provedor de hospedagem, se a porta √© realmente 80. Se n√£o, troque tamb√©m o n√ļmero da porta no c√≥digo.

O c√≥digo acima vai abrir o site com www e com https, instruindo o navegador a abrir apenas de forma segura, mesmo que o usu√°rio digite, com qualquer uma das op√ß√Ķes j√° citadas.

Se você prefere, que o seu site carregue sem www, mas com o https, basta retirar o www da segunda linha do código, que ficaria assim:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://seusite.com/$1 [R=301,L]

Depois de escolher a forma preferida, para carregar seu site, faça os testes para ver como ele carrega.

seusite.com
www.seusite.com
http://seusite.com
http://www.seusite.com
https://seusite.com
https://www.seusite.com

Opção 2: Código PHP

A segunda opção, também funciona muito bem em sites PHP. Caso você tenha um header.php incluído em todas as páginas, basta inserir na primeira linha, o seguinte código. Se não tiver o header.php, então será necessário incluir no topo de cada página, o que torna mais trabalho.

<?php
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
if(!headers_sent()) {
header("Status: 301 Moved Permanently");
header(sprintf(
'Location: https://%s%s',
 $_SERVER['HTTP_HOST'],
 $_SERVER['REQUEST_URI']
 ));
exit();
}
}
?>

Este script, também faz a mesma função, mas pode não ser compatível com todos os sites PHP. Ele não foi testado com WordPress, mas acho que funciona normalmente.

Se voc√™ tentar abrir o site, com todas as op√ß√Ķes j√° mencionadas acima, ele vai carregar apenas com https. A vantagem deste c√≥digo, √© que voc√™ pode inserir em apenas algumas p√°ginas do site, que julgar necess√°rio.

Com uma destas duas op√ß√Ķes, seu site deve sempre abrir com https, independentemente da forma como ser√° acessado.

Voc√™ ainda pode fazer testes com outras op√ß√Ķes

A variável está disponível desde apache 2.4, esta variável contém o valor do esquema solicitado (http ou https), no apache 2.4 você pode usar a seguinte regra:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond www.%{HTTP_HOST} ^(?:www\.)?(www\..+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]

E tem esta também:

RewriteEngine on
RewriteCond %{REQUEST_SCHEME} ^http$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

Em todos os casos, para .htaccess coloque o código abaixo de RewriteEngine on dentro das tags iFModule.

Espero que isso possa lhe ajudar, a resolver o problema de validação de certificado SSL, que é relativamente fácil de configurar.


Redirecionar site para HTTPS : certificado SSL
O que é verificação de certificado SSL
Preciso de um IP dedicado para instalar um SSL?
Como um certificado SSL protege contra phishing?
O que é um certificado SSL e por que eu preciso tê-lo no meu site

Deixe uma resposta

O seu endereço de e-mail não será publicado.