Como Resolver o Erro 'Too Many Redirects' no WordPress

Aprenda a resolver o erro ERR_TOO_MANY_REDIRECTS no WordPress. Causas comuns e soluções passo a passo.

O erro ERR TOO MANY _ REDIRECTS acontece quando o navegador fica preso em um loop infinito de redirecionamentos. Você tenta acessar o site, o servidor redireciona para outra URL, que redireciona para outra, que redireciona de volta para a primeira, e assim por diante. Depois de algumas tentativas, o navegador desiste e exibe o erro.

Esse problema é mais comum do que parece e geralmente está ligado a configurações de SSL, URLs incorretas ou conflitos no .htaccess . A boa notícia: na maioria dos casos, a solução é simples.

Este artigo faz parte do nosso Guia Completo de Erros WordPress .


O Que Causa o Loop de Redirecionamentos

Antes de aplicar soluções, entenda as causas mais comuns:

  1. Configuração de SSL incorreta. O WordPress está configurado para HTTPS, mas o servidor ou proxy não está servindo HTTPS corretamente.
  2. URLs do WordPress e Site URL divergentes. Os campos "Endereço do WordPress" e "Endereço do site" estão com valores conflitantes.
  3. Regras de redirecionamento no .htaccess. Regras duplicadas ou conflitantes que criam loops.
  4. Cloudflare com modo SSL incorreto. O modo "Flexible" do Cloudflare combinado com HTTPS forçado no servidor causa loop.
  5. Conflito de plugins. Plugins de cache, segurança ou redirecionamento criando regras conflitantes.
  6. Redirecionamentos no cache do navegador. O navegador armazenou um redirecionamento antigo que não é mais válido.
  7. Configuração do servidor (Apache/Nginx). Regras de rewrite no servidor que conflitam com o WordPress.

Passo 1: Limpar Cookies e Cache do Navegador

Antes de qualquer alteração técnica, descarte a possibilidade de ser um problema local.

Chrome

  1. Pressione Ctrl + Shift + Delete (Windows) ou Cmd + Shift + Delete (Mac)
  2. Selecione Todo o período
  3. Marque Cookies e outros dados de sites e Imagens e arquivos armazenados em cache
  4. Clique em Limpar dados

Limpeza seletiva (apenas para o site com problema)

Se você não quer limpar todos os cookies:

  1. Clique no cadeado (ou ícone de informações) na barra de endereço
  2. Clique em Cookies e dados do site
  3. Remova os cookies do domínio específico

Teste em janela anônima

Abra uma janela anônima (Ctrl + Shift + N no Chrome) e tente acessar o site. Se funcionar na janela anônima, o problema era cache/cookies.

Se o erro persistir na janela anônima, o problema é no servidor. Continue para o próximo passo.


Passo 2: Verificar as URLs do WordPress

As URLs do WordPress ficam em dois campos: WordPress Address (URL) e Site Address (URL) . Se esses valores estiverem incorretos ou conflitantes, o redirecionamento em loop é garantido.

Cenários que causam loop

  • WordPress URL com http:// e Site URL com https://
  • WordPress URL com www e Site URL sem www
  • WordPress URL com barra final e Site URL sem barra final

Verificando via wp-config.php

Se você não consegue acessar o painel do WordPress (o que é provável neste cenário), force as URLs pelo wp-config.php :

  1. Acesse os arquivos do site via FTP ou gerenciador de arquivos da hospedagem
  2. Abra o arquivo wp-config.php
  3. Adicione as seguintes linhas antes de /* That's all, stop editing! */ :
define('WP_HOME', 'https://seusite.com.br');
define('WP_SITEURL', 'https://seusite.com.br');

Importante:

  • Use https:// se o site tem SSL. Use http:// se não tem.
  • Se o site usa www , inclua (ex: https://www.seusite.com.br ). Se não usa, não inclua.
  • Ambas as URLs devem ser idênticas.

Verificando via banco de dados

Se o wp-config.php não resolver, verifique diretamente no banco de dados:

  1. Acesse o phpMyAdmin
  2. Selecione o banco de dados do WordPress
  3. Abra a tabela wp_options
  4. Procure as linhas siteurl e home
  5. Verifique se ambas têm o mesmo valor e o protocolo correto
SELECT option_name, option_value FROM wp_options
WHERE option_name IN ('siteurl', 'home');

Para corrigir:

UPDATE wp_options SET option_value = 'https://seusite.com.br'
WHERE option_name IN ('siteurl', 'home');

Passo 3: Corrigir o .htaccess

O .htaccess é uma das causas mais frequentes de loops de redirecionamento. Regras duplicadas ou conflitantes, especialmente de redirecionamento HTTP para HTTPS, criam loops facilmente.

Renomeando o .htaccess atual

  1. Acesse os arquivos via FTP ou gerenciador de arquivos
  2. Na raiz do WordPress (onde está o wp-config.php ), encontre o .htaccess
  3. Renomeie para .htaccess_backup
  4. Crie um novo .htaccess com o conteúdo padrão do WordPress:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
  1. Tente acessar o site

Se funcionar, o problema era no .htaccess . Agora, se precisar forçar HTTPS, adicione a regra corretamente:

# Redirecionar HTTP para HTTPS (sem loop)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Erros comuns no .htaccess

Regras duplicadas de HTTPS:

# ERRADO - duas regras de redirecionamento que se conflitam
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Mantenha apenas uma regra de redirecionamento para HTTPS.

Redirecionamento de www conflitante:

# ERRADO - redireciona para www e ao mesmo tempo tenta remover www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Escolha um padrão (com ou sem www) e use apenas uma regra.


Passo 4: Verificar a Configuração de SSL/HTTPS

Problemas de SSL são a causa mais comum do ERR TOO MANY _ REDIRECTS. O cenário típico é:

  • O WordPress está configurado para https://
  • O servidor (ou proxy reverso) está recebendo a requisição em HTTP
  • O WordPress redireciona para HTTPS
  • O servidor recebe novamente em HTTP (porque o proxy termina o SSL)
  • Loop infinito

WordPress atrás de proxy reverso ou load balancer

Se o seu site está atrás de um proxy (Cloudflare, load balancer, Varnish), o servidor recebe as requisições em HTTP mesmo que o visitante esteja acessando via HTTPS. Adicione ao wp-config.php :

// Detectar HTTPS via proxy reverso
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Isso diz ao WordPress que a conexão é HTTPS, mesmo que o servidor esteja recebendo HTTP do proxy.

Forçar HTTPS via wp-config.php

Adicione ao wp-config.php :

define('FORCE_SSL_ADMIN', true);

Isso força HTTPS apenas no painel administrativo, evitando loops no frontend.


Passo 5: Configurar o Cloudflare Corretamente

O Cloudflare é uma das causas mais frequentes de loops de redirecionamento. O problema está no modo de SSL.

Modos de SSL do Cloudflare

Modo Comportamento Quando usar
Flexible HTTPS entre visitante e Cloudflare. HTTP entre Cloudflare e servidor Quando o servidor NÃO tem SSL
Full HTTPS em ambos os lados. Aceita certificado auto-assinado Quando o servidor tem SSL (qualquer certificado)
Full (Strict) HTTPS em ambos os lados. Exige certificado válido Quando o servidor tem certificado válido (Let's Encrypt, etc.)

O problema do modo Flexible

Se o Cloudflare está em modo Flexible e o WordPress está configurado para HTTPS, acontece isso:

  1. Visitante acessa https://seusite.com.br (Cloudflare serve HTTPS)
  2. Cloudflare conecta com o servidor via HTTP (modo Flexible)
  3. O WordPress detecta HTTP e redireciona para HTTPS
  4. Cloudflare recebe o redirecionamento e conecta com o servidor via HTTP novamente
  5. Loop infinito

A solução

  1. Acesse o painel do Cloudflare
  2. Vá em SSL/TLS > Overview
  3. Mude o modo para Full ou Full (Strict)
  4. Certifique-se de que o servidor tem um certificado SSL instalado (Let's Encrypt funciona perfeitamente)

Se você não tem SSL no servidor, instale um antes de mudar para Full. Sem certificado no servidor, o modo Full vai gerar erro 525 ou 526.

Desativar "Always Use HTTPS" temporariamente

Se você precisa diagnosticar se o Cloudflare está causando o loop:

  1. No Cloudflare, vá em SSL/TLS > Edge Certificates
  2. Desative Always Use HTTPS
  3. Teste o site
  4. Se o loop parar, o problema é a combinação de SSL mode + force HTTPS

Limpar cache do Cloudflare

Redirecionamentos podem ficar cacheados no Cloudflare:

  1. Vá em Caching > Configuration
  2. Clique em Purge Everything
  3. Aguarde alguns minutos e teste novamente

Passo 6: Desativar Plugins

Se nenhuma das soluções acima funcionou, um plugin pode estar causando o loop. Plugins de cache, segurança e redirecionamento são os principais suspeitos.

Via FTP (sem acesso ao painel)

  1. Acesse os arquivos via FTP
  2. Vá até wp-content/
  3. Renomeie a pasta plugins para plugins_backup
  4. Tente acessar o site

Se o site funcionar, o problema é em um dos plugins. Para identificar qual:

  1. Renomeie plugins_backup de volta para plugins
  2. Acesse o FTP e, dentro de plugins/ , renomeie cada pasta de plugin individualmente
  3. Teste o site após desativar cada plugin
  4. Quando encontrar o causador, procure uma alternativa ou entre em contato com o desenvolvedor

Plugins que frequentemente causam loops

  • Really Simple SSL - se mal configurado com o Cloudflare
  • WP Force SSL - pode conflitar com regras do .htaccess
  • Redirection - regras de redirecionamento circular
  • Plugins de cache - redirecionamentos cacheados incorretamente
  • Plugins de segurança - regras de firewall que forçam redirecionamentos

Passo 7: Verificar Redirecionamentos no Servidor

Além do .htaccess , o servidor pode ter configurações que causam loops.

Apache: Virtual Host

Se você tem acesso ao arquivo de configuração do Apache, verifique se não há redirecionamentos conflitantes no VirtualHost:

<VirtualHost *:80>
    ServerName seusite.com.br
    Redirect permanent / https://seusite.com.br/
</VirtualHost>

<VirtualHost *:443>
    ServerName seusite.com.br
    # Configurações SSL aqui
    # NÃO adicione redirecionamento para HTTPS aqui (já está em HTTPS)
</VirtualHost>

Nginx

No Nginx, verifique se não há blocos server conflitantes:

# Redirecionar HTTP para HTTPS
server {
    listen 80;
    server_name seusite.com.br www.seusite.com.br;
    return 301 https://seusite.com.br$request_uri;
}

# Bloco HTTPS
server {
    listen 443 ssl;
    server_name seusite.com.br;

    # NÃO redirecione para HTTPS aqui (já está em HTTPS)
    # Configurações SSL e do site
}

Erro comum no Nginx: ter um return 301 dentro do bloco 443 que redireciona para HTTPS novamente.


Como Debugar Cadeias de Redirecionamento

Para entender exatamente o que está acontecendo, use estas ferramentas.

curl no terminal

O comando curl -I mostra os headers de resposta, incluindo redirecionamentos:

curl -I -L http://seusite.com.br

A flag -L segue os redirecionamentos. Você vai ver a cadeia completa:

HTTP/1.1 301 Moved Permanently
Location: https://seusite.com.br/

HTTP/1.1 301 Moved Permanently
Location: http://seusite.com.br/

HTTP/1.1 301 Moved Permanently
Location: https://seusite.com.br/
...

Se as URLs se repetem, você encontrou o loop.

Para ver todos os redirecionamentos de forma mais detalhada:

curl -v -L --max-redirs 10 http://seusite.com.br 2>&1 | grep -i "location:"

Ferramentas online

  • httpstatus.io - mostra a cadeia completa de redirecionamentos
  • Redirect Checker (redirect-checker.org) - ferramenta específica para detectar loops
  • Chrome DevTools > Network - na aba Network, filtre por "Doc" e veja os redirecionamentos 301/302

Chrome DevTools

  1. Abra o Chrome DevTools (F12)
  2. Vá para a aba Network
  3. Marque Preserve log (para manter os logs entre redirecionamentos)
  4. Desmarque Disable cache
  5. Acesse o site
  6. Observe as requisições com status 301 ou 302 e a coluna "Location"

Dicas de Prevenção

Para evitar o ERR TOO MANY _ REDIRECTS no futuro:

  • Defina um padrão de URL e mantenha. Com ou sem www, HTTP ou HTTPS. Escolha um e configure em todos os lugares.
  • Não misture fontes de redirecionamento. Se o Cloudflare já redireciona HTTP para HTTPS, não adicione a mesma regra no .htaccess e no wp-config.php.
  • Teste alterações de SSL em staging. Antes de mudar configurações de SSL na produção, teste em um ambiente separado.
  • Documente suas configurações. Anote onde cada redirecionamento está configurado (Cloudflare, .htaccess, Nginx, plugin).
  • Faça backup do .htaccess antes de qualquer alteração.

Ainda Preso no Loop?

Se você tentou todos os passos acima e o erro persiste, o problema pode envolver configurações de servidor que exigem acesso root ou conhecimento avançado de Apache/Nginx. Não perca mais tempo tentando resolver sozinho. A equipe da HOSTWP diagnostica e resolve problemas de redirecionamento rapidamente, incluindo configurações de Cloudflare, SSL e servidor. Do servidor ao site, a gente cuida de tudo.

Fale com a HOSTWP pelo WhatsApp e resolva o erro de uma vez.


Leia também:

Artigos relacionados