🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir site quebrado após migração do WordPress

Time Full Services Time Full Services
Tipo Migracao & Backup
Nome do erro Site quebrado após migração EN: Broken site after migration
Severidade Crítico
Descrição O site quebrado após migração do WordPress aparece com layout sem CSS, imagens faltando, links apontando para o domínio antigo ou tela branca. A causa quase sempre é a URL antiga ainda gravada no banco de dados ou credenciais erradas no wp-config.php do novo servidor.

O que é o site quebrado após migração do WordPress?

Um site quebrado após migração é o estado em que o WordPress foi movido para outro servidor ou domínio, mas não funciona corretamente no destino: o CSS não carrega (página “crua”), imagens e links apontam para o endereço antigo, ou o site nem abre. Isso ocorre porque a migração copia arquivos e banco, mas o banco ainda guarda referências (URLs, caminhos) do ambiente de origem.

Como identificar

  • O site abre sem estilo, como texto puro (“o CSS sumiu”).
  • Imagens e links apontam para o domínio ou caminho antigo e retornam 404.
  • Tela branca (white screen) ou “Error establishing a database connection” ao abrir.
  • O wp-admin redireciona para a URL antiga e não permite login.
Antes de começar: Faça backup completo do banco de dados antes do search-replace: a operação altera milhares de linhas e é irreversível sem cópia. Remova as linhas WP_HOME/WP_SITEURL do wp-config.php depois que a URL definitiva estiver gravada no banco.

Como prevenir

  • Use um plugin de migração confiável que já faz o search-replace da URL ao importar
  • Faça backup completo de arquivos e banco antes de iniciar qualquer migração
  • Teste o site em staging com o domínio final antes de apontar o DNS para o novo host

Causa

  • URL antiga (siteurl/home e referências no conteúdo) ainda gravada no banco de dados após a cópia.
  • Credenciais de banco erradas no wp-config.php do novo servidor (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST).
  • Caminho absoluto de arquivos diferente no novo host (uploads e includes apontando para a pasta antiga).
  • .htaccess ou regras de servidor da origem incompatíveis com o novo ambiente (Apache vs Nginx).
  • Permissões de arquivos e pastas incorretas após a transferência (FTP sem preservar 644/755).

Como resolver

  1. Confirme o wp-config.php do novo host: compare DB_NAME, DB_USER, DB_PASSWORD e DB_HOST com os dados do painel do novo servidor. Banco copiado mas credenciais antigas geram tela branca ou erro de conexão.
  2. Defina a URL temporariamente no wp-config: se o admin redireciona para o domínio antigo, force a URL nova com WP_HOME e WP_SITEURL no wp-config.php para conseguir entrar e ajustar.
  3. Faça o search-replace da URL no banco: substitua a URL antiga pela nova em todo o banco, de forma a preservar dados serializados. Use o WP-CLI (search-replace) ou a ferramenta Better Search Replace; nunca um find-and-replace cru.
  4. Regenere o .htaccess e os permalinks: em Configurações > Links permanentes, clique em Salvar para reescrever o .htaccess no padrão do novo servidor.
  5. Corrija permissões e limpe cache: aplique 644 para arquivos e 755 para pastas via FTP e limpe qualquer cache (plugin/CDN) para o site renderizar com os caminhos novos.
BASH
# WP-CLI: substitui a URL antiga pela nova em TODO o banco, preservando dados serializados
wp search-replace 'https://dominio-antigo.com' 'https://dominio-novo.com' --all-tables --report-changes-only

# Teste primeiro com --dry-run (nao grava nada, so mostra o que mudaria):
wp search-replace 'https://dominio-antigo.com' 'https://dominio-novo.com' --all-tables --dry-run

Perguntas frequentes

Por que o CSS some depois de migrar?
Porque o banco ainda guarda a URL antiga em siteurl/home. O WordPress tenta carregar o CSS do domínio anterior, que não responde no novo ambiente. Um search-replace da URL no banco restaura os caminhos e o estilo volta.
Posso trocar a URL com um UPDATE de SQL simples?
Não. Muitos dados no WordPress são serializados (widgets, opções de tema, plugins). Um UPDATE cru quebra o tamanho declarado das strings e corrompe esses dados. Use WP-CLI search-replace ou Better Search Replace, que tratam a serialização.
O site abre em tela branca após migrar. O que checar primeiro?
Comece pelo wp-config.php: confirme as credenciais de banco do novo host (DB_HOST costuma mudar) e ative o WP_DEBUG para ver o erro real. Tela branca geralmente é erro de conexão ou fatal error de plugin/tema.
Migrei e o wp-admin redireciona para o domínio antigo. Como entro?
Force a URL nova adicionando define('WP_HOME','https://novo.com') e define('WP_SITEURL','https://novo.com') ao wp-config.php. Isso permite acessar o painel; depois faça o search-replace no banco e remova as linhas.
Preciso de SSH para corrigir?
Não obrigatoriamente. O WP-CLI (via SSH) é o caminho mais seguro, mas o plugin Better Search Replace faz a mesma troca de URL pelo painel, também preservando dados serializados. Faça backup do banco antes em ambos.
As imagens não aparecem mesmo após o search-replace. Por quê?
Verifique se a pasta wp-content/uploads foi transferida por completo e com as permissões certas (755 nas pastas). Caminhos absolutos antigos ou uploads faltando geram 404 nas imagens mesmo com a URL já corrigida.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes