6 min de leitura

Como mudar o domínio do site sem perder o Google: o que fiz no semmarca

Mudar o domínio do site sem perder o Google exige redirect 301 na zona certa, www e http cobertos, Search Console e uma auditoria de SEO. Este é o passo a passo real da migração do semmarca.

seodominioredirect 301cloudflaresearch console

O semmarca nasceu num subdomínio do meu site, semmarca.joaovitral.com. Funcionava, mas um produto que cobra por Pix e quer aparecer no Google precisa de endereço próprio. Por isso decidi migrar para o semmarca.app.

O medo de qualquer dono de site nessa hora é o mesmo: perder o que o Google já conhece. São as páginas que já aparecem na busca, os links compartilhados em grupo de WhatsApp e os favoritos no navegador de alguém. Se o endereço antigo devolver erro, tudo isso vira página quebrada.

A migração em si tem poucos passos. O trabalho está nos detalhes que ninguém lembra até quebrar. Abaixo está a ordem real que segui e os tropeços que apareceram no caminho.

O código primeiro, a infraestrutura depois.

O código já estava migrado e mergeado na main antes de eu mexer no Cloudflare (PR #2 do repositório). Com isso, a publicação foi o roteiro de sempre, na pasta do projeto:

git checkout main
git pull
cd web
npm run deploy

Antes de publicar, porém, havia uma armadilha.

O anti-robô que bloquearia o domínio novo.

Antes de liberar o download, o semmarca passa pelo Turnstile, o anti-robô do Cloudflare. O widget do Turnstile tem uma lista de domínios autorizados, e nela só estava semmarca.joaovitral.com. Se eu publicasse no domínio novo sem mexer nisso, o anti-robô recusaria todo mundo e o site ficaria no ar sem funcionar.

A correção foi adicionar o semmarca.app sem tirar o antigo, porque durante a transição os dois endereços recebem visitas:

GET /accounts/{id}/challenges/widgets
PUT no widget com a lista de domains completa

O detalhe está no PUT: ele leva a lista inteira, não só o domínio novo. Depois conferi lendo o widget de volta, e ele aceitava os dois endereços.

O redirect 301 que não funcionava.

Essa é a parte que mais importa para o Google. O 301 avisa aos buscadores que a página mudou de endereço de forma permanente, e o que ela já tinha conquistado na busca vai junto.

Criei a regra no painel do Cloudflare e testei. Não redirecionava. Corrigi a regra e testei de novo. Nada.

O problema não estava na regra, estava no lugar dela. No Cloudflare, cada domínio é uma zona separada. A zona joaovitral.com, que recebe as visitas do endereço antigo, não tinha nenhuma regra de redirect. A minha provavelmente tinha ido parar na zona semmarca.app, que é o destino e não a origem.

A regra certa ficou na zona joaovitral.com, com o nome "semmarca -> semmarca.app": redirect 301, preservando a query string. Preservar a query importa porque um link com parâmetro de campanha tem que chegar inteiro.

Depois olhei a zona semmarca.app para ver se tinha sobrado alguma regra solta. Não havia nada para limpar.

Em outra sessão, mexendo no portfólio, o redirecionamento do subdomínio antigo foi feito por um Worker separado, o semmarca-redirect, dedicado só àquele endereço. Testei com a raiz e com /es/tiktok?x=1. Os dois chegaram no semmarca.app mantendo caminho e parâmetros.

Search Console e Bing sem entregar a conta.

Com o redirect no ar, o Google precisa saber que o domínio novo existe. Adicionei o semmarca.app no Search Console e verifiquei pelo registro TXT manual no DNS. Escolhi esse caminho para não dar ao Google acesso à minha conta do Cloudflare.

No Bing Webmaster Tools, importei as propriedades direto do Search Console. O Bing pede só leitura do Search Console e o e-mail. Na importação, marquei só as duas propriedades do semmarca e deixei de fora outro projeto que estava na mesma conta. A propriedade chegou com 0 sitemaps, então enviei o sitemap.

Também liguei o Crawler Hints na zona do semmarca.app.

O www e o http: os endereços que ninguém testa.

Quem digita o endereço na mão às vezes coloca www, às vezes não. Salvei o registro DNS do www no semmarca.app e criei o redirect 301 do www para a raiz. Usei o template "WWW para raiz" do Cloudflare, que já vem pronto.

O https://www passou a redirecionar certo. Já o http://www, sem o s, dava erro 522. A correção foi ligar o Always Use HTTPS na zona semmarca.app. Com isso, todo endereço chega no mesmo lugar:

http://www.semmarca.app/tiktok?x=1 → https://semmarca.app/tiktok?x=1

São dois saltos 301, e o último termina em 200.

E-mail com o domínio novo.

Um detalhe que fica para trás em quase toda migração é o e-mail de contato. Liguei o Email Routing na zona semmarca.app, adicionei os registros MX, SPF e DKIM e criei a regra contato@semmarca.app, que encaminha para o meu e-mail pessoal. No código, o e-mail aparecia num lugar só, a constante SITE.email. Troquei, publiquei e conferi o novo endereço em todas as páginas. Os três MX já respondem.

A auditoria de SEO das 34 páginas.

Por fim, auditei as 34 páginas do sitemap no ar:

  • todas têm título e descrição, no tamanho bom e sem repetição entre páginas;
  • o canonical e o og:url batem com a própria página;
  • as imagens de compartilhamento têm 1200×630 e não mostram o domínio antigo;
  • o favicon e o manifest estão completos.

Só faltava o og:image:alt, o texto alternativo da imagem que aparece quando alguém compartilha o link. Adicionei.

Como verificar que a sua migração funcionou.

Foi isto que testei no semmarca, e serve para qualquer site:

  1. Abra o endereço antigo com caminho e parâmetro, não só a página inicial, e confira se ele chega no novo com tudo preservado.
  2. Teste as quatro combinações: com e sem www, com http e com https.
  3. Faça no domínio novo o fluxo que gera dinheiro. No semmarca, baixei um vídeo de 2 MB e o Turnstile passou. Depois gerei um Pix: o QR de R$ 4,90 do Mercado Pago saiu e a consulta de status respondeu "pending".
  4. Confira no Search Console e no Bing se a propriedade nova está verificada e com o sitemap enviado.
  5. Mande um e-mail para o endereço novo e veja se ele chega.

O item 5 ainda está pendente: falta mandar a mensagem de teste para o contato@ e ver se chega. O acompanhamento da indexação no Search Console também continua, e isso é coisa de semanas, não de um dia.

A lição.

Mudar de domínio não é difícil. O que derruba são os detalhes: a regra na zona errada, o anti-robô que não conhece o domínio novo, o http://www que ninguém testa. Nenhum desses erros aparece se você testar só a página inicial com https.

Se você vai trocar o domínio do site da sua empresa, não basta perguntar a quem faz se o site novo está no ar. A pergunta certa é o que acontece com o link antigo que alguém salvou há dois anos.