# Como corrigir o redirecionamento 301 que não funciona no SEOPress

No SEOPress PRO, um redirecionamento 301 só dispara quando o toggle Enable redirection está ativo, a URL de origem é relativa, a de destino é absoluta e nenhum redirect de servidor intercepta a URL antes do WordPress carregar.

## 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.

**Antes de começar:** Antes de editar o .htaccess ou a config do Nginx, baixe uma cópia do arquivo. Uma regra mal formada nesses arquivos pode derrubar o site inteiro com erro 500.

## 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.

Erros relacionados

- [Como corrigir ERR_TOO_MANY_REDIRECTS no WordPress](https://full.services/wp-fixer/corrigir-err-too-many-redirects-wordpress/)
- [Como corrigir o sitemap XML que não gera no SEOPress](https://full.services/wp-fixer/corrigir-sitemap-xml-seopress/)
- [Como corrigir meta tags duplicadas entre SEOPress e Rank Math](https://full.services/wp-fixer/corrigir-meta-tags-duplicadas-seopress-rankmath/)

## 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

1. 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.
2. 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
```

3. 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/
```

4. 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/
```

5. 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.

## Código

```bash
# 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/
```

## Perguntas frequentes

### Por que meu redirecionamento 301 do SEOPress não funciona mesmo salvo?

Quase sempre o toggle Enable redirection da própria regra está desligado, ou a URL de destino foi salva em formato relativo quando o SEOPress exige endereço absoluto completo. Ative o interruptor e corrija o destino.

### Onde fica a tela de redirecionamentos do SEOPress?

No menu do WordPress, em SEO -> PRO -> Redirections. O recurso de redirects 301 faz parte do SEOPress PRO e não está disponível na versão gratuita do plugin.

### Por que aparece ERR_TOO_MANY_REDIRECTS depois que criei o redirect?

Esse erro é loop: origem e destino apontam para a mesma URL ou uma cadeia de regras devolve o destino para a origem. Confirme que origem e destino são endereços diferentes e remova regras encadeadas.

### O SEOPress 301 não redireciona porque tenho regra no .htaccess?

Sim. O redirect do SEOPress roda em PHP, depois do servidor. Se o Apache ou o Nginx já responde com um redirect próprio para aquela URL, a regra do SEOPress nunca é avaliada. Remova a regra duplicada do servidor.

### A URL de destino precisa ser absoluta no SEOPress?

Sim. A origem deve ser o caminho relativo e o destino deve ser a URL absoluta completa, com protocolo e domínio. Destino em formato relativo é ignorado e o redirect não dispara.

### Como confirmo que o redirect está retornando 301 de verdade?

Consulte os cabeçalhos da URL de origem pelo terminal com o comando curl de inspeção. A resposta correta traz o código 301 e um cabeçalho Location apontando para a URL de destino que você cadastrou.

### O cache pode fazer o redirect do SEOPress parar de funcionar?

Pode. Um plugin de cache de página pode servir a versão antiga da URL antes do PHP do SEOPress rodar. Limpe o cache do plugin e do navegador após criar ou alterar a regra de redirect.

**Fonte:** [SEOPress — Manage redirections](https://www.seopress.org/support/guides/redirections/)
