Como corrigir o redirecionamento 301 que não funciona no SEOPress
O que é o redirecionamento 301 do SEOPress?
O módulo de Redirections do SEOPress PRO captura a URL de origem no momento em que o WordPress carrega a página e responde com um cabeçalho 301 apontando para a URL de destino que você definiu. Por ser processado em PHP, o redirect só vale para URLs que chegam ao WordPress: se outra camada (servidor, CDN ou outro plugin) já responde antes, a regra do SEOPress nunca é avaliada e o redirecionamento parece quebrado.
Como identificar
- A URL de origem continua abrindo a página antiga (HTTP 200) em vez de redirecionar para o destino, mesmo com a regra salva em SEO -> PRO -> Redirections.
- O navegador mostra a mensagem ERR_TOO_MANY_REDIRECTS ou a página fica em loop, sinal de origem e destino apontando para a mesma URL.
- A regra existe na lista de redirects mas a coluna de status aparece desligada (Enable redirection desmarcado).
- Um redirect com expressão regular pega URLs demais ou nenhuma, porque o padrão de origem casa errado.
- Ao testar pelo terminal, o cabeçalho de resposta retorna 200 ou 302 do servidor em vez do 301 do SEOPress.
Como prevenir
- Cadastre cada redirect sempre como 301 com origem relativa e destino absoluto, e ative o Enable redirection da regra antes de sair da tela.
- Centralize todos os redirecionamentos em um único módulo (o do SEOPress) e desative regras equivalentes no .htaccess, no Nginx e em outros plugins de redirect.
- Use o detector de erros 404 do SEOPress e converta o 404 em redirect direto pela ferramenta, evitando digitar URLs à mão e errar o formato.
- Ao usar expressão regular, teste o padrão em uma URL real antes de salvar, já que um regex amplo pode redirecionar páginas que deveriam ficar no ar.
Causa
- O toggle Enable redirection da regra está desmarcado: o SEOPress salva a entrada mas não a aplica enquanto o interruptor individual do redirect estiver desligado.
- A URL de destino foi salva em formato relativo (apenas o caminho) quando o SEOPress exige caminho absoluto completo com protocolo e domínio, então o redirect é ignorado.
- Existe um redirect concorrente no arquivo .htaccess do Apache, na config do Nginx ou em outro plugin de redirect que responde antes do WordPress carregar, anulando a regra PHP do SEOPress.
- Origem e destino apontam para a mesma URL (ou para URLs que se redirecionam em cadeia), criando o loop que dispara ERR_TOO_MANY_REDIRECTS.
- O padrão de expressão regular na origem está com a sintaxe errada (sem a âncora inicial ou com grupo de captura inválido), fazendo a regra não casar com a URL real.
- Um plugin de cache de página entregou a versão antiga da URL antes do PHP do SEOPress rodar, então o visitante recebe a página em cache em vez do 301.
Como resolver
- Confirme que a regra está ativa: No painel, vá em SEO -> PRO -> Redirections, localize a linha do redirect e verifique se o interruptor Enable redirection da própria regra está ligado, além do toggle global do módulo no topo da página. Uma regra salva mas desligada nunca dispara.
- Corrija o formato das URLs: Deixe a URL de origem como caminho relativo (sem o domínio) e a URL de destino como endereço absoluto completo, com protocolo e domínio. Esse é o formato que o módulo de redirects exige para aplicar o 301.
Origem (relativa): /página-antiga/ Destino (absoluta): https://seusite.com.br/página-nova/ Redirect type: 301 - Teste o cabeçalho real da resposta: Pelo terminal, consulte os cabeçalhos da URL de origem e confirme que a resposta é 301 e que o Location aponta para o destino correto. Se vier 200, a regra não está casando; se vier 302 ou um redirect do servidor, há outra camada interceptando.
curl -I https://seusite.com.br/página-antiga/ - Elimine o redirect concorrente: Procure regras de redirect duplicadas no .htaccess (Apache), no bloco server do Nginx e em outros plugins de redirecionamento que cubram a mesma URL. Remova a regra duplicada e mantenha apenas a do SEOPress para acabar com o conflito.
Redirect 301 /página-antiga/ https://seusite.com.br/página-nova/ - Quebre o loop e limpe o cache: Se o sintoma for ERR_TOO_MANY_REDIRECTS, confirme que origem e destino são URLs diferentes e que nenhuma regra encadeia o destino de volta para a origem. Depois, limpe o cache do plugin de cache e do navegador para que a próxima requisição passe pelo PHP do SEOPress.
# Confirma o codigo de status e o destino real da URL de origem
curl -sI https://seusite.com.br/pagina-antiga/ | grep -iE 'HTTP/|location'
# Resposta esperada quando o 301 do SEOPress funciona:
# HTTP/2 301
# location: https://seusite.com.br/pagina-nova/














