301 vs 302 vs 307 vs 308: Qual Redirect Usar
Escolher o redirect errado pode manter uma URL antiga no Google por meses ou transformar o envio de um formulário em uma requisição GET que perde os dados. Veja o que cada código de status significa, qual usar e como conferir se seus redirects estão funcionando.
Os quatro redirects em resumo
| Status | Permanente? | Mantém método e corpo? | Use para |
|---|---|---|---|
301 Moved Permanently | Sim | Não garantido (POST pode virar GET) | Páginas movidas, HTTP → HTTPS, mudanças de domínio |
302 Found | Não | Não garantido | Mudanças de curto prazo, testes A/B, manutenção |
307 Temporary Redirect | Não | Sim | Mudanças temporárias de endpoints de API e formulários |
308 Permanent Redirect | Sim | Sim | Mudanças permanentes de endpoints de API que recebem POST |
Para SEO, o Google trata 301 e 308 como sinais fortes de que a nova URL deve substituir a antiga, e transfere os sinais de ranqueamento para ela. 302 e 307 dizem ao Google para manter a URL antiga indexada. Os detalhes de cada código estão na referência Códigos de Status HTTP.
Qual escolher
- Página movida de vez (novo slug, artigo unificado, novo domínio) → 301.
- HTTP para HTTPS, www para sem www → 301 (ou 308).
- Temporário (página de promoção, manutenção, roteamento por região ou idioma) → 302.
- Um endpoint de API ou handler de formulário foi movido → 308 (permanente) ou 307 (temporário), para que os dados do POST não se percam.
Evite cadeias e loops
Uma cadeia é /a → /b → /c: cada salto custa uma ida e volta, e os crawlers podem parar de seguir depois de vários saltos. Um loop (/a → /b → /a) quebra a página por completo. Depois de uma migração, aponte cada URL antiga diretamente para o destino final. Confira o caminho completo de qualquer URL (cada salto, status e tempo) com o Verificador de Redirects, incluindo se as versões http, https, www e sem www chegam ao mesmo lugar.
Regras para copiar e colar
Apache (.htaccess):
Redirect 301 /old-page /new-page
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Nginx:
location = /old-page { return 301 /new-page; }
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
Vercel (vercel.json): "permanent": true envia um 308, que o Google trata como um 301.
{ "redirects": [ { "source": "/old-page", "destination": "/new-page", "permanent": true } ] }
Transforme uma planilha de URLs antigas → novas em regras para qualquer servidor com o Gerador de Redirects, ou monte uma configuração Apache completa com o Gerador de .htaccess.
Checklist de migração
- Mapeie cada URL antiga para a nova mais relevante. Não mande todas para a página inicial, pois o Google trata isso como soft 404.
- Use 301 (ou 308) para mudanças permanentes e mantenha os redirects por pelo menos um ano.
- Atualize os links internos e o sitemap para as novas URLs, para que os redirects sejam apenas uma rede de segurança.
- Teste uma amostra das URLs antigas e depois acompanhe o relatório de Páginas do Search Console para ver erros 404.