WordPress.org incentiva SSL

Como mudar um site WordPress de HTTP para HTTPS passo a passo

Este pequeno guia tem como objectivo explicar como fazer a alteração do protocolo http para https numa instalação WordPress já existente.

Utilizarei como domínio exemplo “www.dominio.pt” mas poderia ser qualquer outro, com ou sem www.

Se seguirem estes passos correctamente, não é necessário qualquer plugin específico para que o WordPress funcione em https.

1. Testar o certificado

Depois de instalado certificado SSL no servidor/alojamento (fora do âmbito deste guia), há que o testar e garantir que funciona devidamente, sem avisos no browser.

Para isso basta abrir um URL estático com o protocolo https, por exemplo o license.txt do WordPress, em https://www.dominio.pt/license.txt. Se o WordPress estiver instalado noutra pasta, é necessário adaptar este URL.

Se não há avisos, neste momento temos a certeza que o certificado SSL se encontra correctamente configurado e podemos avançar para o passo seguinte.

2. Alterar o URL na base de dados do WordPress

Este é o ponto mais crítico, mas nem por isso complicado. Escusado será dizer que antes de avançar é essencial fazer um backup da base de dados.

O que há a perceber é que alterar o protocolo de http para https numa instalação WordPress não é muito diferente de alterar o URL quando, por exemplo, movemos um site de um endereço de desenvolvimento ou staging para produção.

Basicamente temos de fazer um “serialized search and replace” na base de dados de http://www.dominio.pt para https://www.dominio.pt (sem barra no final).

Fizeste dump da base de dados e estás a fazer o search/replace no teu editor favorito? Pára com isso, agora! A sério, pára! “Ah, mas eu já fiz assim e correu tudo bem” – Arquivar em “developer famous last words”.

O WordPress, os seus plugins e temas, bem como outros sistemas de gestão de conteúdos (CMS), utilizam por vezes a base de dados para guardar configurações em arrays ou objectos devidamente “serializados” (transformados numa string). Não entrando em muitos detalhes, se se efectuar um search/replace de alguma informação dentro destes arrays ou objectos, o mais provável é que se destrua essa mesma informação.

Existem várias formas de fazer este search/replace correctamente, mas como este guia é dirigido a todo o tipo de utilizadores, mesmo os principiantes que provavelmente nem terão acesso shell ao alojamento, vou referir um método mais simples.

Nota: Devem antes de mais garantir que as constantes WP_HOME e WP_SITEURL não estão a ser forçadas no wp-config.php, ou seja, que nesse ficheiro não existem instruções semelhantes a:

define('WP_HOME','http://...');
define('WP_SITEURL','http://...');

1) Instalar e activar o pluginBetter Search Replace

2) Ir a Ferramentas – Better Search Replace e preencher o formulário em conformidade (sem barra no final dos URLs) e inactivando a opção “Run as dry run?”:

Se tudo correr bem,  serão reencaminhados para o ecrã de login, já que o URL do site foi entretanto alterado e a sessão deixou de ser válida.

Alternativas à utilização do plugin “Better Search Replace”:

Nota: No caso do website em causa ter WPML, Multisite ou CDN com vários (sub-)domínios, será necessário repetir este passo para todos os (sub-)domínios que vão ser alterados de http para https.

3. Mixed Content?

Teoricamente, nesta fase, o site deverá estar a funcionar em https, mas poderão existir plugins ou temas que não usem as melhores práticas de programação e sejam apresentados erros de “mixed content” ao navegar no site.

É portanto necessário navegar exaustivamente no site e garantir que em todas as páginas é apresentado o cadeado verde na barra de endereço, não existindo erros de “mixed content”.

Caso existam erros deste tipo, é necessário analisar o código fonte (HTML) da página em questão, procurar por http:// e tentar resolver caso a caso (fora do âmbito deste guia).

Exemplos de casos em que poderá ser necessária intervenção externa:

  • Plugins que incorrectamente carregam recursos em http;
  • Sistemas de publicidade que não estejam a ser carregados, ou não suportem sequer, em https;
  • Widgets com conteúdos de terceiros;
  • Conteúdos embed;

4. Já está? Quase. Falta o redireccionamento 301

É de referir que o WordPress, por si só, trata da grande maioria destes redireccionamentos, pelo que este passo pode ser opcional. De qualquer forma, fica a informação e eu faço-o sempre.

Agora que já temos o website a funcionar devidamente sobre SSL, há que garantir que a navegação no mesmo é sempre efectuada desta forma. Além disso é necessário “informar” os motores de busca de que o nosso URL mudou.

Para isso basta adicionar a seguinte regra no .htaccess, caso utilize o Apache:

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

Se não utiliza o Apache, peça ajuda ao seu fornecedor de alojamento para criação desta regra de redireccionamento.

O que é importante é que não se configure este redireccionamento sem ter a certeza que já não existe “mixed content”, por exemplo, no corpo de posts e páginas do website, ou esta regra poderá mascarar esse problema e ficamos numa situação em que, para cada recurso, são feitos mais requests ao servidor do que os necessários (o original em http e o redireccionamento para https).

Também não é má ideia, neste momento, fazer as devidas alterações de URL no Google Analytics e Google Search Console.

Deixar uma resposta