technical

Redireciona HTTP para HTTPS

O MetricSpot verifica se os pedidos http:// são redirecionados com 301 para https://. Sem isso, o teu site tem duas cópias indexáveis — e uma janela de downgrade para cada visitante de primeira vez.

O que esta verificação faz

Faz um pedido a http://teudominio.com/ e procura uma resposta 301 ou 308 com um cabeçalho Location: a apontar para https://. A verificação falha se a versão HTTP devolver 200 (o teu site é servido em dual em texto simples) ou não devolver nada (a porta 80 HTTP não está à escuta).

Porque é importante

Mesmo com HTTPS disponível, o primeiro pedido que um novo visitante faz é quase sempre em texto simples. Escreve teudominio.com e o browser tenta primeiro HTTP. Sem redirecionamento, três coisas correm mal ao mesmo tempo.

  • Duas cópias indexáveis. O Google trata http://example.com/page e https://example.com/page como URLs separados. Sem um 301, ambos podem aparecer no índice, dividindo backlinks e sinal de ranking.
  • Janela de downgrade. Esse primeiro pedido em texto simples é quando os ataques estilo sslstrip acontecem em redes hostis. O servidor deve recusar a conversa e forçar o upgrade.
  • Avisos de conteúdo misto. Se a versão HTTP renderizar mesmo, cada URL de asset na página que não for protocol-relative é obtido por HTTP — e os browsers modernos bloqueiam-nos em silêncio.

O redirecionamento é a ponte para o HSTS. Uma vez definido o HSTS, os browsers deixam de bater em HTTP nas visitas seguintes — mas o redirecionamento ainda tem de apanhar visitantes de primeira vez e crawlers.

Como corrigir

Põe-te à escuta na porta 80 e devolve 301 para o equivalente HTTPS de cada caminho:

nginx:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;

  return 301 https://www.example.com$request_uri;
}

Apache (.htaccess):

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

Caddy — automático. O Caddy redireciona HTTP→HTTPS por defeito assim que um site block tem um hostname elegível para TLS.

Cloudflare — SSL/TLS → Edge Certificates → “Always Use HTTPS” → On.

Vercel / Netlify / Render / Dokku — o redirecionamento HTTPS está ligado por defeito em qualquer projeto com domínio personalizado.

Trata do certificado primeiro. Se ainda não tens, Let’s Encrypt + Certbot é gratuito e renova-se automaticamente:

sudo certbot --nginx -d example.com -d www.example.com

Audita por ticurl -sI http://example.com/ deve imprimir HTTP/1.1 301 Moved Permanently e um cabeçalho Location: https://.... Qualquer outra coisa (200, 404, connection refused) falha a verificação.

Perguntas frequentes

301 ou 308?

O 301 é o padrão. O 308 (RFC 7538) é a mesma ideia, mas garante que o método e o body não são reescritos no redirecionamento, o que importa em pedidos POST. Para um site típico com tráfego GET, o 301 chega e é o que cada CDN / WAF usa por defeito.

E o subdomínio da API — mesma regra?

Sim. Qualquer subdomínio que sirva tráfego real deve redirecionar HTTP para HTTPS da mesma maneira. Se a API for daquelas que aceita HTTPS (sem fallback) também podes configurar o servidor para recusar a porta 80 por completo com connection: close.

Devo redirecionar para www ou não-www ao mesmo tempo?

Se vais colapsar as duas decisões num só redirecionamento, sim — combina-as para que os visitantes aterrem no URL canónico após um salto, não dois. Vê Mantém as cadeias de redirecionamento curtas para a armadilha de empilhar redirecionamentos.

Fontes

Última atualização 2026-05-11