WordPress redirecionando para outro site: como corrigir

Encontre redirecionamentos indevidos no WordPress com curl, wp_options, .htaccess, temas e mu-plugins. Veja como corrigir e testar o acesso público.

Página desviada para um caminho diferente do endereço esperado

Seu WordPress abre normalmente quando você digita o endereço, mas leva o visitante para outro site quando ele vem do Google? O teste precisa reproduzir essa diferença. Regras no servidor e códigos inseridos no WordPress podem escolher quem será redirecionado pelo endereço de origem, pelo dispositivo ou por um cookie.

Para corrigir, descubra primeiro quem manda o navegador trocar de endereço. Abaixo você vai testar a resposta HTTP, abrir os campos home e siteurl no banco e procurar regras no .htaccess, no tema e em plugins que ficam fora da lista comum do painel.

Se o destino é desconhecido, não informe sua senha ali. Use o painel da hospedagem ou SFTP para examinar a instalação e guarde uma cópia privada dos arquivos, do banco e dos logs antes de editar.


Como testar o redirecionamento com curl

O curl permite ler o status HTTP e o cabeçalho Location, que informa o destino de um redirecionamento enviado pelo servidor. Ele não executa o JavaScript da página.

No terminal do Windows, use curl.exe. No macOS ou Linux, use curl. Comece sem seguir o destino:

curl.exe -sS -I --max-time 20 "https://seu-dominio.example/"

Troque o endereço pelo seu site. Se aparecer um status como 301 ou 302 com Location apontando para um domínio desconhecido, o servidor já está enviando a troca. Não acrescente a opção de seguir a cadeia antes de ler esse destino.

Como visualizar a cadeia de redirecionamentos

Para acompanhar uma cadeia entre endereços conhecidos, use -L. O exemplo abaixo consulta a versão HTTP deste domínio:

curl.exe -sS -I -L --max-redirs 5 --max-time 20 "http://juanmoura.com/"

Os trechos da resposta mostram a passagem para HTTPS e a página final:

HTTP/1.1 301 Moved Permanently
Location: https://juanmoura.com/

HTTP/1.1 200 OK

Nesse caso, a mudança conserva o domínio e entrega a página em HTTPS. Num site afetado, leia cada Location para encontrar onde a cadeia sai do endereço esperado. O limite de cinco saltos encerra o teste se o servidor continuar redirecionando.

Alguns servidores respondem de forma diferente a HEAD, usado por -I, e a GET, usado para carregar a página. Para consultar com GET e mostrar apenas os cabeçalhos no Windows:

curl.exe -sS -D - -o NUL --max-time 20 "https://seu-dominio.example/"

No macOS ou Linux, troque NUL por /dev/null. Essa consulta descarta o HTML recebido e também não executa scripts. As opções do curl permitem ajustar os testes sem abrir o destino no navegador.

Quando só acontece para quem vem do Google

Compare a mesma URL com e sem o cabeçalho Referer. Este comando informa uma origem do Google:

curl.exe -sS -I --max-time 20 -e "https://www.google.com/" "https://seu-dominio.example/pagina-afetada/"

Se o destino muda nesse teste, procure condições ligadas à origem no servidor e no código. Se as duas respostas estão normais, repita com GET e examine o navegador: o redirecionamento pode depender de JavaScript, de um cookie ou de outra condição que ainda não foi reproduzida.

Uma janela privada e um teste no celular ajudam a reproduzir o acesso público. Mantenha anotados a URL inicial, o destino e a condição que acionou a mudança. Depois da limpeza, você vai repetir esse mesmo caminho.


Confira home e siteurl no banco de dados

home guarda o endereço público do site; siteurl, o local dos arquivos do WordPress. Se foram alterados para outro domínio, corrija os valores correspondentes à instalação.

Com o painel acessível, abra Configurações > Geral e leia Endereço do WordPress e Endereço do site.

Campos Endereço do WordPress e Endereço do site nas configurações gerais
Compare os endereços com a instalação real. Eles podem ser diferentes quando o WordPress está em uma pasta própria.

Sem conseguir entrar, abra o phpMyAdmin pela hospedagem e escolha o banco indicado em DB_NAME, no wp-config.php. Localize a tabela que termina em _options. O prefixo correto aparece em $table_prefix no mesmo arquivo.

Na aba SQL, esta consulta apenas lê os dois campos. Substitua wp_options pelo nome da tabela da sua instalação:

SELECT option_name, option_value
FROM wp_options
WHERE option_name IN ('home', 'siteurl');

Para corrigir, abra as linhas correspondentes na tabela, clique em Editar e salve cada option_value com a URL correta, incluindo HTTPS quando configurado. Preserve uma cópia dos valores anteriores. Se o WordPress fica em uma subpasta e o site abre na raiz, os campos podem ser diferentes; não iguale os dois automaticamente.

Confira ainda se WP_HOME ou WP_SITEURL estão definidos no wp-config.php. Essas constantes podem impor valores diferentes dos gravados no banco. Corrija uma definição indevida existente em vez de acrescentar outra por cima.

Depois de salvar, abra o login no domínio esperado. Se o endereço volta a mudar no banco, algum código ou acesso continua fazendo a alteração. A configuração correta e os caminhos de subpasta estão descritos na alteração de endereço do WordPress.

Procure regras condicionais no .htaccess e no servidor

Em servidores que usam .htaccess, baixe uma cópia privada e abra o arquivo como texto. Examine a pasta da instalação e as pastas superiores que também alcançam o site. Ative a exibição de arquivos ocultos no gerenciador ou no SFTP.

Procure por Redirect, RewriteRule, HTTP_REFERER, HTTP_USER_AGENT e pelo domínio de destino. Uma regra condicionada à origem pode ter esta forma:

# Exemplo para reconhecer na leitura; nao adicione esta regra.
RewriteCond %{HTTP_REFERER} google\. [NC]
RewriteRule ^ https://destino-invalido.example/ [R=302,L]

O domínio reservado no exemplo serve apenas para mostrar onde estaria o destino. Num arquivo comprometido, a condição e a regra precisam ser lidas juntas: apagar somente o endereço pode deixar uma instrução incompleta.

Compare o bloco com uma cópia confiável e remova a regra indevida identificada. Preserve os redirecionamentos legítimos e o bloco de links permanentes do WordPress. Apagar o arquivo inteiro pode quebrar URLs e retirar proteções que não tinham relação com a invasão.

Se o servidor é Nginx, esse arquivo não controla os redirecionamentos. Procure as diretivas return e rewrite na configuração do site, ou a área de redirecionamentos do painel. Confira também regras na CDN, como Redirect Rules ou Bulk Redirects quando usa Cloudflare. Salve a regra anterior e teste uma alteração de cada vez.

A página carrega e depois muda? Procure JavaScript

Se o servidor entrega 200 e o navegador troca de endereço logo depois, abra as ferramentas do desenvolvedor, entre em Rede/Network e marque Preservar registro/Preserve log. Recarregue na condição em que o problema aparece e leia a coluna de iniciador da nova navegação.

Procure no HTML e nos scripts pelo domínio de destino e por chamadas como estas:

window.location.href = 'https://destino-invalido.example/';
window.location.replace('https://destino-invalido.example/');

São exemplos para reconhecer uma troca de endereço, não instruções para instalar no site. Também existe redirecionamento por meta refresh. Um código malicioso pode montar o destino a partir de pedaços, então buscar só pelo domínio completo nem sempre o encontra.

Tema, plugins e a pasta mu-plugins

Abra wp-content/themes e compare o tema ativo com uma versão confiável. Examine header.php, footer.php, functions.php e os JavaScript carregados pela página. Compare também o tema filho, onde podem existir alterações legítimas que precisam ser preservadas.

Revise wp-content/mu-plugins. Esses plugins carregam automaticamente e aparecem numa área separada do painel; desativar os plugins comuns não interrompe os arquivos dessa pasta. A hospedagem também pode instalar componentes legítimos ali. Confira a autoria e o conteúdo de cada arquivo antes de retirá-lo.

Em wp-content/plugins, verifique componentes de redirecionamento e de inserção de scripts, como Redirection, WPCode e similares. Uma regra indevida pode ter sido salva nas configurações de um plugin legítimo. Remova a entrada confirmada e preserve as regras que o site usa.

Buscas por base64_decode, gzinflate ou eval podem revelar trechos que merecem inspeção, mas essas palavras também aparecem em código legítimo. Compare os arquivos com o pacote oficial e não execute um trecho desconhecido para tentar descobrir o que ele faz.

Scripts salvos no banco, em widgets e em páginas

Abra widgets, HTML personalizado e as áreas de scripts do tema e do construtor. No banco, confira os registros correspondentes em _options, _posts e nos metadados usados pelo componente. A tela de pesquisa do phpMyAdmin permite buscar o domínio suspeito sem editar os registros.

Salve uma cópia da linha encontrada antes de retirar o trecho. Se o valor está serializado, prefira editar pela interface do plugin ou usar um procedimento que preserve esse formato. Uma troca de texto feita diretamente no SQL pode quebrar o restante da configuração.

Quando o domínio aparece em um script externo, revise também quem autorizou esse script e a conta que o publica. Restaurar o arquivo local não remove uma injeção mantida por uma integração externa.



Como limpar e confirmar que o redirecionamento acabou

Depois de localizar a alteração, remova o arquivo adicional confirmado ou substitua o componente comprometido por uma cópia confiável. Preserve as personalizações legítimas separadamente. Um scanner como o Wordfence ajuda a comparar arquivos e localizar mudanças; cada reparo precisa corresponder ao arquivo encontrado.

Revise as contas administrativas e os acessos à hospedagem. Atualize ou substitua o componente que permitiu a entrada, troque as credenciais comprometidas e encerre as sessões anteriores. O passo a passo de recuperação de um WordPress hackeado trata dessa limpeza completa.

Limpe o cache do site, da hospedagem e da CDN depois de corrigir o código e as regras. O navegador também pode ter guardado um redirecionamento permanente. Repita o teste em uma sessão nova, com a mesma URL e origem que acionavam a troca.

Teste a home, uma página interna, o login e o formulário. Compare de novo as respostas do curl com e sem Referer. Se o redirecionamento retorna depois de algumas horas, procure um arquivo que o recria, uma tarefa agendada ou uma conta ainda comprometida, em vez de apenas apagar a regra outra vez.

Dúvidas que mudam o diagnóstico

SEO é técnico. A parceria é pessoal. Do diagnóstico à implementação.

O DNS pode redirecionar para outra página?

Registros como A, AAAA e CNAME indicam servidores, não uma URL com caminho. Um endereço alterado no DNS pode levar seu domínio a um servidor que entrega outro conteúdo ou envia um redirecionamento HTTP. Confira os registros com os valores do serviço contratado e as opções de encaminhamento de URL no provedor, que são um recurso separado.

Restaurar um backup resolve?

Resolve quando a cópia confiável substitui o que foi alterado e a entrada usada pelo invasor também é corrigida. Um backup do WordPress não desfaz automaticamente uma regra na CDN ou uma alteração no painel do domínio. Veja como restaurar arquivos e banco sem perder os dados recentes antes de escolher a data.

O redirecionamento saiu, mas continua o aviso no Google

O aviso de segurança tem um pedido de revisão próprio. Depois da limpeza, abra o relatório do Search Console e siga a revisão do aviso de site perigoso. Se também apareceram URLs falsas, elas precisam receber o tratamento de remoção do spam nos resultados.

Conclusão

Guarde a URL e a condição que faziam o visitante sair do site. A correção fica comprovada quando esse acesso entrega a página esperada e o arquivo ou a regra indevida deixa de ser recriado.

O redirecionamento continua aparecendo depois desses testes? Envie a URL inicial e o destino observado para eu avaliar a instalação. A manutenção do WordPress inclui a investigação dos arquivos, do banco e das regras que mantêm essa troca.

Quem escreve por aqui

Juan Moura

Especialista em SEO Técnico & IA

Especialista em SEO Técnico. Identifico e corrijo o que impede o Google de rastrear, indexar e ranquear sites. Atendo WordPress, Shopify, Tray, Nuvemshop e sites customizados.

SEO técnicoWordPressDesenvolvimento
Conheça minha trajetória