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.
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:
- 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.
- Teste as quatro combinações: com e sem www, com http e com https.
- 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".
- Confira no Search Console e no Bing se a propriedade nova está verificada e com o sitemap enviado.
- 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.
Quer saber quanto fica o seu?
Me conta o que você precisa. Depois de uma conversa curta, o valor fechado vai por escrito.