Num VPS escolhe-se um único endereço canónico (por exemplo https://seudominio.tld) e manda-se tudo o resto para lá com um redireccionamento 301: o HTTP para o HTTPS, e o www para o nome simples (ou o contrário, se preferir o www). No nginx faz-se com return 301; no Apache, com Redirect permanent. É tudo configuração do servidor, sem .htaccess.
Pré-requisito: já ter o certificado a funcionar para os dois nomes (com e sem www). Se só um tem certificado, o visitante que for ao outro vê o aviso do navegador antes de chegar ao redireccionamento. Veja o certificado com o certbot.
No nginx
| 1 |
Um bloco para a porta 80 que reencaminha tudo, mantendo o caminho e os parâmetros:server { listen 80; server_name seudominio.tld www.seudominio.tld; return 301 https://seudominio.tld$request_uri; }
|
|
| 2 |
Um bloco para o www em HTTPS que manda para o nome simples (precisa do certificado, mesmo que só reencaminhe):server { listen 443 ssl; server_name www.seudominio.tld; ssl_certificate /etc/letsencrypt/live/seudominio.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/seudominio.tld/privkey.pem; return 301 https://seudominio.tld$request_uri; }
|
|
| 3 |
O bloco do site verdadeiro fica só com server_name seudominio.tld; e listen 443 ssl;.
|
|
| 4 |
Teste e recarregue: sudo nginx -t e sudo systemctl reload nginx.
|
|
No Apache
| 1 |
O virtual host da porta 80 reencaminha tudo:<VirtualHost *:80> ServerName seudominio.tld ServerAlias www.seudominio.tld Redirect permanent / https://seudominio.tld/ </VirtualHost>
|
|
| 2 |
O virtual host do www em 443 (com as mesmas linhas de certificado que o do site) acaba com Redirect permanent / https://seudominio.tld/.
|
|
| 3 |
Teste e recarregue: sudo apache2ctl configtest (ou apachectl no AlmaLinux e Rocky) e sudo systemctl reload apache2.
|
|
Conferir que ficou certo
Do seu computador: curl -I http://www.seudominio.tld/pagina. A resposta deve ser 301 e a linha Location: deve ser o endereço final completo, com a página no fim. Siga para o passo seguinte com curl -I no endereço da Location até ver um 200. Mais de dois saltos significa que há redireccionamentos a mais.
| O que vê |
Causa provável |
| “Demasiados redireccionamentos” (loop) |
Há um serviço à frente (Cloudflare em modo flexível, por exemplo) a falar em HTTP com o seu servidor, e o servidor manda-o para HTTPS outra vez. Veja ligar o SSL no Cloudflare sem partir o site. |
| O www mostra o aviso de certificado |
O certificado não inclui o nome com www. Emita-o para os dois. |
| A página perde o caminho |
Escreveu o destino sem $request_uri (nginx) ou sem a barra final em Redirect (Apache). |
| Continua a abrir em HTTP |
O bloco da 80 não é o que atende o nome; confira o server_name e se o site predefinido está activo. |
|
Use 301 só quando tiver a certeza. Os navegadores guardam o 301 durante muito tempo; um destino errado fica agarrado a quem já o visitou. Enquanto ensaia, use 302 (return 302 ...) e troque para 301 quando estiver certo.
|
|
O certbot sabe fazer isto sozinho: a opção --redirect (ou a pergunta que ele faz) acrescenta o redireccionamento HTTP para HTTPS. O do www para o nome simples é seu. Para redireccionar páginas e domínios com cuidado em relação ao Google, veja redireccionamentos 301.
|
|
O site deixou de abrir depois de mexer na configuração? Se o servidor deixou de responder à rede, vemos do nosso lado.
Abrir um pedido de suporte
|
PRODUTO RECOMENDADO Registe o seu domínio .com Garanta o nome da sua empresa antes que outro o registe. a partir de $17.00/ano Pesquisar domínio |