Veja como forçar HTTPS no site pelo cPanel ou pelo arquivo htaccess, inclusive no WordPress e com Cloudflare, sem cair em loop de redirecionamento.
Forçar HTTPS significa redirecionar quem digita http://seudominio.com.br para https://seudominio.com.br, com o cadeado. Navegadores marcam páginas sem HTTPS como "Não seguro" e o Google dá preferência a sites com HTTPS, então hoje isso é o padrão para qualquer site.
Antes de começar
- O certificado SSL precisa estar ativo. Abra
https://seudominio.com.brno navegador: se aparecer o cadeado sem alerta, pode seguir. Nas contas cPanel o SSL grátis (AutoSSL) é emitido sozinho quando o domínio aponta para a hospedagem. - Faça uma cópia do arquivo
.htaccessantes de editar. No Gerenciador de Arquivos do cPanel ele fica na pasta do site (normalmentepublic_html) e é um arquivo oculto: ative Show Hidden Files (dotfiles) em Settings para vê-lo.
Opção 1: forçar HTTPS pelo cPanel, sem editar arquivo
- Abra o cPanel e entre em Domains. Fica na seção Domains (Domínios).
- Ligue o Force HTTPS Redirect. Na linha do seu domínio, ative a chave Force HTTPS Redirect. Ela só fica disponível quando o domínio já tem um certificado válido.
- Teste. Abra uma janela anônima e acesse
http://seudominio.com.br. O endereço deve mudar parahttps://.
Opção 2: forçar HTTPS pelo arquivo htaccess
Use quando quiser controlar o redirecionamento pelo próprio site ou combinar com outras regras. Coloque este bloco no topo do .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
A primeira linha liga o módulo de reescrita, a segunda verifica se o acesso chegou sem HTTPS e a terceira manda o visitante para o mesmo endereço com https://, usando o código 301 (redirecionamento permanente, o que o Google recomenda).
Se o site está numa subpasta (por exemplo, public_html/loja), o .htaccess com a regra vai dentro dessa subpasta.
HTTPS e www na mesma regra
Para que todo acesso termine em https://www.seudominio.com.br, num único redirecionamento:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,R=301]
Prefere sem www? Troque as três últimas linhas por:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
Se o site usa Cloudflare
Com o proxy da Cloudflare ligado (nuvem laranja), o servidor pode receber a visita em HTTP mesmo quando o visitante usa HTTPS. Para a regra entender isso, verifique também o cabeçalho que a Cloudflare envia:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
No painel da Cloudflare, em SSL/TLS, use o modo Full (strict). O modo Flexible é a causa número um de loop de redirecionamento.
Como forçar HTTPS no WordPress
- Troque os endereços do site. Em Configurações » Geral, mude Endereço do WordPress (URL) e Endereço do site (URL) para
https://e salve. Você vai precisar entrar de novo. - Adicione a regra no .htaccess acima do bloco do WordPress. O WordPress mantém um trecho entre
# BEGIN WordPresse# END WordPress. Coloque a regra de HTTPS antes dessa linha, nunca dentro dela, porque o WordPress reescreve esse trecho ao salvar os links permanentes. - Corrija o conteúdo misto. Imagens e scripts antigos gravados com
http://fazem o cadeado aparecer com aviso. Um plugin de busca e substituição no banco resolve; faça backup antes.
Header always set Strict-Transport-Security "max-age=31536000". Só ative quando tiver certeza, porque o navegador passa a recusar o HTTP por um ano.Problemas comuns
ERR_TOO_MANY_REDIRECTS (a página redirecionou você muitas vezes)
Há dois redirecionamentos brigando. As causas mais comuns: Cloudflare em modo Flexible, a mesma regra repetida no .htaccess e num plugin, ou o Force HTTPS Redirect do cPanel ligado junto com uma regra diferente de www. Deixe só um mecanismo ativo e limpe o cache do navegador.
Erro 500 logo depois de salvar o arquivo
Há um erro de digitação no .htaccess. Restaure a cópia e cole as linhas de novo, sem espaços extras no começo de RewriteCond e RewriteRule.
NET::ERR_CERT_COMMON_NAME_INVALID no endereço com www
O certificado foi emitido só para o domínio sem www (ou o contrário). Confira se o www também aponta para a hospedagem no DNS e aguarde a próxima execução do AutoSSL antes de forçar o redirecionamento.
O cadeado aparece com aviso ou "parcialmente seguro"
É conteúdo misto: a página é HTTPS, mas carrega alguma imagem, fonte ou script por http://. Abra o console do navegador (F12) para ver quais arquivos são e troque os endereços para https://.