Ir diretamente para o conteúdo

Definições de cookies

Escolha que tipos de cookies permite. Pode alterar a sua escolha a qualquer momento em Definições de cookies, no fundo de cada página. Política de privacidade

Necessários

Sempre ativos

Necessários para iniciar sessão, manter o seu carrinho e memorizar as suas escolhas. Estão sempre ativos.

Que cookies?
  • weboke_sessie, weboke_klant, weboke_remember: a sua sessão e manter a sessão iniciada
  • weboke_basket: o seu carrinho
  • wkBtwIncl: mostrar preços com ou sem IVA
  • wok_cookies: a sua escolha de cookies, 12 meses

Mede que anúncio leva a uma visita ou encomenda, para não pagarmos por anúncios que não dão resultado.

Que cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), até 90 dias
  • OpenAI Ads, anúncios no ChatGPT
  • wok_aff: através de que parceiro chegou até nós (programa de afiliados), 60 dias

4,6

País e idioma

Cada país tem o seu próprio site, com os preços e o IVA desse país.

Ver

www, redirecionamento e conteúdo misto

Módulo 3: Endereço, https e utilizadores · Tempo de leitura: 9 minutos

Objetivo de aprendizagem: Depois desta lição, saberá escolher um endereço principal, encaminhar todas as variantes para ele com um único redirecionamento e detetar e corrigir conteúdo misto.

Conceitos-chave: endereço canónico, 301 e 308, cadeia de redirecionamentos, conteúdo misto (mixed content), pesquisar e substituir na base de dados, dados serializados

Quatro endereços, um site

O seu site está acessível através de quatro endereços:

http://example.com
http://www.example.com
https://example.com
https://www.example.com

Para um visitante isso é indiferente, mas para os motores de pesquisa são quatro endereços diferentes com o mesmo conteúdo. Também os cookies (como o seu cookie de sessão) valem por nome: quem inicia sessão em www não tem sessão iniciada no domínio sem www. Por isso, escolha um endereço canónico (o endereço principal) e faça o redirecionamento dos outros três para ele.

Qual escolhe é uma questão de gosto (lição 2.1). O importante é que o endereço principal seja o mesmo em todo o lado: no DNS, no certificado, em Opções > Geral (lição 3.1) e nos redirecionamentos.

Redirecionamento com um 301, num só passo

Um redirecionamento é uma resposta do servidor: "esta página está noutro sítio". O navegador vai então automaticamente para o novo endereço. O código indica que tipo de redirecionamento é:

CódigoSignificadoUtilização
301Movido permanentementeA escolha habitual para http para https e para www para o domínio sem www (ou o inverso)
308Permanente, e o método (por exemplo, o envio de um formulário) mantém-seTambém pode ser usado para este fim; navegadores e motores de pesquisa tratam-no como um 301
302 ou 307TemporárioApenas para algo realmente temporário, como uma página de manutenção

Um redirecionamento permanente indica aos motores de pesquisa que o novo endereço é o verdadeiro. Com um temporário, continuam a memorizar o endereço antigo.

Tenha também atenção à cadeia. Suponha que o seu endereço principal é https://example.com. Nesse caso, pretende:

http://www.example.com   301  https://example.com/
http://example.com       301  https://example.com/
https://www.example.com  301  https://example.com/
https://example.com      200

Cada variante chega ao endereço principal num só passo. O que acontece muitas vezes:

http://www.example.com   301  https://www.example.com/
https://www.example.com  301  https://example.com/

Isto funciona, mas custa um passo adicional (mais tempo de espera, sobretudo em dispositivos móveis) e um handshake TLS adicional. Pior ainda é um ciclo: o servidor web redireciona para https, o WordPress redireciona de volta para http porque os endereços nas opções ainda estão em http, e o navegador indica "demasiados redirecionamentos". Nesse caso, há duas definições a trabalhar uma contra a outra. Certifique-se de que existe apenas uma parte a redirecionar para https (o servidor web ou o painel) e de que os endereços no WordPress já correspondem ao endereço principal.

O próprio WordPress também faz redirecionamentos: se alguém pedir https://www.example.com/contact/ e o endereço do site for https://example.com, o WordPress redireciona para https://example.com/contact/. Isto só funciona se o pedido chegar ao WordPress, ou seja, se o servidor web também encaminhar o nome www para este site.

Conteúdo misto

Conteúdo misto (mixed content) é uma página https que carrega elementos através de http://: uma imagem, uma folha de estilos, um script, um tipo de letra ou um vídeo incorporado. O navegador considera isso inseguro, porque esses elementos podem ser alterados pelo caminho.

  • Scripts, folhas de estilos e iframes através de http são bloqueados pelos navegadores. O seu site fica então com um aspeto danificado ou uma funcionalidade deixa de funcionar.
  • Imagens, áudio e vídeo através de http: os navegadores modernos tentam obtê-los automaticamente através de https; se isso falhar, são bloqueados. O cadeado pode então mostrar um aviso.

De onde vem:

  1. Ligações antigas no seu conteúdo: um site que antes estava em http tem <img src="http://example.com/wp-content/uploads/..."> em milhares de artigos. O WordPress guarda essas ligações literalmente na base de dados.
  2. Definições de temas ou plugins com um endereço completo, por exemplo um logótipo ou fundo com http://.
  3. Elementos externos de outro site que só estão acessíveis através de http. Esses têm de ser substituídos ou removidos.
  4. Endereços em Opções > Geral que ainda estão em http (lição 3.1).

Como encontrá-lo

Abra a página, prima F12 e veja o separador Consola. O navegador indica cada conteúdo misto com o endereço do elemento. Ou pesquise no código-fonte da página (Ctrl+U) por src="http:// e href="http://. Ligações para outros sites em texto normal (<a href="http://...">) não causam conteúdo misto; o que conta são os elementos que a página carrega.

Pesquisar e substituir, mas da forma correta

A solução para ligações antigas no seu conteúdo é substituir todos os http://example.com na base de dados por https://example.com. A tentação é usar um comando SQL como:

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');

Não faça isso. Muitas definições de temas, plugins e widgets são guardadas de forma serializada. Têm este aspeto:

s:27:"http://example.com/logo.png";

O s:27 significa: segue-se um texto de 27 caracteres. Após uma substituição simples, o texto passa a ter 28 caracteres (foi acrescentado um s), mas continua a indicar 27. O PHP deixa então de conseguir ler o valor e a definição desaparece sem aviso: um menu vazio, um logótipo desaparecido, widgets que sumiram.

Utilize uma ferramenta que atualize esses comprimentos e faça sempre primeiro uma cópia de segurança (lição 8.1): pesquisar e substituir não tem reciclagem.

  • WP-CLI: primeiro verificar, depois executar. No terminal, vá para a pasta do seu WordPress e execute primeiro o teste (primeira linha) e só depois a substituição real (segunda linha).
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid

Com --dry-run vê quantas substituições seriam feitas por tabela, sem alterar nada. --skip-columns=guid deixa intactos os identificadores fixos dos artigos (coluna guid); o WordPress recomenda nunca os alterar. Sem opção adicional, o WP-CLI só atua nas tabelas do WordPress. Se um plugin tiver tabelas próprias com o mesmo prefixo, acrescente --all-tables-with-prefix. Use --all-tables apenas se souber porquê: isso afeta todas as tabelas da base de dados, incluindo as de outro site ou aplicação.

  • Um plugin de pesquisa e substituição que suporte dados serializados (há vários no diretório de plugins de wordpress.org). Também aí, use primeiro o modo de teste e remova o plugin depois.

Nunca substitua algo como example.com sem http:// ou https:// antes: assim afetaria também endereços de e-mail e outros textos. O procedimento completo, também para quem não tem terminal, está no artigo da base de conhecimento sobre pesquisar e substituir na base de dados do WordPress (ver Leitura adicional).

Na prática: o aspeto num painel

Como exemplo, usamos o DirectAdmin. Outros painéis têm uma opção semelhante para "usar sempre https".

  1. Nas definições do domínio, ative Forçar o uso de SSL (https) (lição 3.1).
  2. Escolha no domínio se o www deve ir para o domínio sem www ou o inverso (no DirectAdmin, nas definições do domínio; caso contrário, com um redirecionamento através de Config. redirecionamentos do site ou .htaccess).
  3. Verifique a cadeia com o exercício abaixo ou com as ferramentas de programador do seu navegador (separador Rede, opção "Preservar registo").

Resumo

  • Escolha um endereço canónico e faça com que as outras três variantes cheguem lá com um 301 (ou 308), num só passo.
  • Deixe apenas uma parte redirecionar para https; caso contrário, obtém um ciclo.
  • Conteúdo misto é uma página https que carrega elementos através de http; a consola do navegador mostra quais.
  • As ligações antigas na base de dados substituem-se com wp search-replace ou um plugin que compreenda dados serializados, nunca com um REPLACE simples em SQL.
  • Primeiro sempre uma cópia de segurança e primeiro um teste (--dry-run); deixe a coluna guid intacta e limite-se às tabelas do WordPress.

Questionário

1. Que redirecionamento utiliza para encaminhar http de forma permanente para https?



2. Depois de ativar "usar sempre https", o navegador indica "demasiados redirecionamentos". Qual é a causa mais provável?



3. Porque é que UPDATE ... REPLACE(...) em SQL é perigoso para converter endereços?



4. Que elemento numa página https é sempre bloqueado pelo navegador quando é carregado através de http?



Exercício

Exercício A3.2: Um endereço principal e nenhum conteúdo misto. Introduza o seu domínio. O programa abre as quatro variantes (http e https, com e sem www) e segue os redirecionamentos. O resultado é bom se: as quatro chegarem ao mesmo endereço com https, com no máximo um redirecionamento por variante e apenas códigos permanentes (301 ou 308). Em seguida, o programa lê o HTML da página inicial e procura scripts, folhas de estilos, imagens, iframes e tipos de letra carregados através de http://.

Exercício A3.2: Um endereço principal e nenhum conteúdo misto


O que preenche e o que encontramos não ficam guardados. O seu navegador memoriza as suas respostas e se concluiu o exercício com sucesso. Se tiver sessão iniciada, guardamos apenas que concluiu o exercício (quase) com sucesso em Os meus cursos; aí também o pode eliminar.

Leitura adicional

Estes artigos descrevem os passos nos painéis da WebOké; noutros painéis funcionam de forma semelhante.

Um momento…

Configurar os seus domínios

Para cada domínio, defina os servidores de nomes, a ligação ao seu alojamento e quem fica como titular.

A carregar os seus domínios…