Redirect 301 vs 302 vs 307 vs 308 para SEO: Guia Completo
Trocar URL sem redirecionar quebra backlinks, perde autoridade e cria 404. O redirect certo preserva o SEO. Veja a diferença entre cada código HTTP, implementação em 5 stacks, mapeamento em massa para migrações e como auditar redirect chains.
Por Vitor Morais
Fundador do MochaLabz ·
Gere slugs SEO-friendly antes da migração
URLs limpas e amigáveis prontas para copiar — sem acentos, sem espaços, com hífen.
Usar gerador de slug →Redirecionamento HTTP é a forma como o servidor diz ao navegador (ou ao Googlebot) “esta URL mudou de lugar”. Trocar uma URL sem redirecionar quebra backlinks externos, gera 404 para usuários que digitam ou clicam no link antigo, e perde toda a autoridade acumulada com o Google. O redirect 301 é a forma correta de migrar URLs preservando SEO. Esse guia cobre os quatro principais códigos (301, 302, 307, 308), implementação em cinco stacks comuns e os erros que destroem a estratégia.
O que é um redirect HTTP
Quando o servidor responde com status code na faixa 3xx, ele diz ao cliente: “a URL que você pediu está em outro lugar, vá para esta”. O cliente segue automaticamente. Para o usuário é transparente — ele acaba na página final sem notar. Para SEO, faz toda a diferença qual código foi usado e como a cadeia foi montada.
Os 4 status codes de redirect que você precisa conhecer
| Critério | Significado | Permanente? | Preserva método HTTP? |
|---|---|---|---|
| 301 | Moved Permanently | Sim | Pode mudar (POST → GET em alguns clientes) |
| 302 | Found (temporário) | Não | Pode mudar (POST → GET em alguns clientes) |
| 307 | Temporary Redirect | Não | Sim — preserva método |
| 308 | Permanent Redirect | Sim | Sim — preserva método |
O que muda na prática
- SEO: 301 e 308 transferem link equity para a nova URL e atualizam o índice. 302 e 307 mantêm a URL antiga indexada.
- Cache do navegador: 301/308 são cacheados agressivamente (o navegador pode lembrar para sempre). 302/307 não são cacheados por padrão.
- Método HTTP: 307 e 308 são da spec HTTP/1.1 e obrigam a preservar o método. 301/302 historicamente permitiam mudança (POST → GET), o que pode quebrar APIs.
Quando usar cada um
| Critério | Código recomendado |
|---|---|
| Mudança definitiva de URL (slug, estrutura) | 301 |
| Migração de domínio inteiro | 301 |
| HTTP → HTTPS | 301 |
| www → não-www (ou vice-versa) | 301 |
| A/B test temporário entre URLs | 302 |
| Página em manutenção | 302 |
| Versão sazonal (ex: Black Friday) | 302 |
| API REST com método POST/PUT/DELETE migrando temporariamente | 307 |
| API REST mudando definitivamente preservando POST | 308 |
| URL apontando para arquivo dinâmico | 301 (na maioria dos casos) |
Regra mental simples
Se o conteúdo mudou de URL para sempre: 301. Se vai voltar à URL original em algum momento: 302. Se é uma API REST e o método importa: 308 (permanente) ou 307 (temporário).
Implementação em Next.js (App Router)
Next.js tem API declarativa nativa no next.config.js:
// next.config.js
module.exports = {
async redirects() {
return [
// Slug antigo → novo (301 permanente)
{
source: '/artigo/old-slug',
destination: '/artigos/new-slug',
permanent: true,
},
// Pattern com parâmetro dinâmico
{
source: '/blog/:slug',
destination: '/artigos/:slug',
permanent: true,
},
// A/B test (temporário, vira 307 por padrão)
{
source: '/landing',
destination: '/landing-v2',
permanent: false,
},
// Por query string
{
source: '/product',
has: [{ type: 'query', key: 'id', value: '(?<id>.*)' }],
destination: '/products/:id',
permanent: true,
},
// Subdomínio
{
source: '/:path*',
has: [{ type: 'host', value: 'www.meusite.com' }],
destination: 'https://meusite.com/:path*',
permanent: true,
},
];
},
};permanent: true ≠ 301 sempre
Em Next.js, permanent: true retorna 308 (não 301), pois o Next prioriza preservar método HTTP. permanent: false retorna 307. Para forçar 301/302 explicitamente, use statusCode: 301.
Implementação em Apache (.htaccess)
# Redirect simples (sintaxe direta)
Redirect 301 /url-antiga /url-nova
Redirect 302 /promo-temporaria /promo-2026
# RewriteRule (mais flexível)
RewriteEngine On
# Mudança de prefixo /blog/ → /artigos/
RewriteRule ^blog/(.*)$ /artigos/$1 [R=301,L]
# HTTP → HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# www → não-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# Remover trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
# Redirect com regex avançado
RewriteRule ^categoria/([0-9]+)$ /categorias/$1 [R=301,L]Implementação em Nginx
# nginx.conf — bloco server
server {
server_name meusite.com;
# Redirect URL específica (301 explícito)
location = /url-antiga {
return 301 /url-nova;
}
# Pattern com regex (permanent = 301)
location /blog/ {
rewrite ^/blog/(.*)$ /artigos/$1 permanent;
}
# Redirect 302 (temporário)
location /promo {
return 302 /promo-2026;
}
}
# Server separado para redirect HTTP → HTTPS
server {
listen 80;
server_name meusite.com www.meusite.com;
return 301 https://meusite.com$request_uri;
}
# Server separado para www → não-www
server {
listen 443 ssl;
server_name www.meusite.com;
return 301 https://meusite.com$request_uri;
}Implementação em Vercel (vercel.json)
{
"redirects": [
{
"source": "/blog/(.*)",
"destination": "/artigos/$1",
"permanent": true
},
{
"source": "/old-slug",
"destination": "/new-slug",
"statusCode": 301
}
]
}Implementação em Cloudflare (Page Rules / Bulk Redirects)
Para sites atrás do Cloudflare, redirects podem ser configurados sem mexer no servidor de origem:
- Page Rules (legado, limite de 3 no plano free): “Forwarding URL” → 301 ou 302.
- Bulk Redirects (novo, ilimitado em planos pagos): suporta milhares de redirects via lista CSV.
- Workers / Functions: programe redirects dinâmicos com lógica custom.
Mapeamento em massa para migrações
Em migrações grandes (ex: trocar de Wordpress para Next.js, mudar estrutura de URL inteira), você precisa do mapeamento URL antiga → URL nova bem documentado. Padrão:
- Exporte todas as URLs atuais via crawler (Screaming Frog) ou via sitemap.xml.
- Defina a regra de transformação ou mapeamento manual para cada URL.
- Gere arquivo de redirects (CSV, Map, ou o que sua stack precisar).
- Implemente como 301 antes de cortar o site antigo.
- Teste com curl em massa antes do go-live.
- Submeta novo sitemap ao Google Search Console.
- Acompanhe o relatório de Páginas no GSC durante 60–90 dias.
Os 7 erros que destroem SEO em redirects
Lista negra
- Redirect chain: A → B → C → D consome crawl budget e dilui equity. Sempre A → D direto.
- Redirect loop: A → B → A causa erro infinito. Use crawler para detectar.
- 302 quando deveria ser 301: URL antiga continua indexada, equity não passa. Confira ao mover definitivamente.
- Mass redirect para a home: Google trata como soft 404. Sempre redirecionar para conteúdo equivalente.
- Não cobrir HTTP/HTTPS e www/não-www: gera URLs duplicadas concorrendo no índice.
- Esquecer de redirecionar URLs com trailing slash (ou sem). Padronize em uma versão.
- Tirar o redirect cedo demais: backlinks externos param de funcionar e equity é perdida. Mantenha por anos.
Como auditar e detectar problemas
# curl: ver toda a cadeia de redirects e códigos
curl -ILs https://meusite.com/url-antiga | grep -E '^(HTTP|Location)'
# Saída esperada (sem chain):
# HTTP/2 301
# location: https://meusite.com/url-nova
# HTTP/2 200
# Chain detectada (problemática):
# HTTP/2 301
# location: /b
# HTTP/2 301
# location: /c
# HTTP/2 301
# location: /d
# HTTP/2 200- Screaming Frog ou Sitebulb: crawla o site, gera relatório de redirects com chains, loops e 404s.
- httpstatus.io e redirectdetective.com: ferramentas online para checagem pontual.
- Google Search Console → Páginas: mostra URLs redirecionadas detectadas pelo Googlebot.
- Logs do servidor: filtre por status 301/302 e por User-Agent Googlebot para ver o que ele está seguindo.
Quanto tempo manter o redirect ativo
Recomendação oficial do Google: no mínimo 1 ano para que a transferência de equity se consolide e o índice atualize totalmente. Recomendação prática da maioria dos especialistas SEO: mantenha para sempre. O custo é zero (uma linha de configuração) e remover quebra backlinks externos antigos que ainda apontam para a URL original.
Em migrações documentadas, mantenha um arquivo redirects.json ou planilha versionada — assim futuras manutenções sabem o que não pode ser removido.
Checklist de redirects bem feitos
- ✅ 301 (ou 308) para mudanças permanentes; 302 (ou 307) para temporárias.
- ✅ Sempre redirect direto — A → destino final, sem chain.
- ✅ HTTP → HTTPS configurado em todo o site.
- ✅ www / não-www unificado em uma versão única.
- ✅ Trailing slash padronizado (sempre com ou sempre sem).
- ✅ Redirects para conteúdo equivalente, nunca para a home.
- ✅ Mapeamento documentado em arquivo versionado.
- ✅ Auditoria periódica (chains, loops, 404s) via Screaming Frog.
- ✅ Sitemap atualizado submetido ao GSC após migração.
- ✅ Redirect mantido pelo menos 1 ano (idealmente para sempre).
- ✅ Para APIs REST: 307/308 que preservam método HTTP.
- ✅ HSTS configurado para reforçar HTTPS em navegadores.
Perguntas frequentes
Qual a diferença entre redirect 301 e 302?+
301 é Moved Permanently — diz ao navegador e aos buscadores que a URL mudou para sempre. O Google passa o link equity (autoridade acumulada) para a nova URL e atualiza o índice. 302 é Found (originalmente Moved Temporarily) — redirecionamento temporário. O Google mantém a URL antiga no índice e não passa equity por completo. Use 301 para mudanças definitivas e 302 só para temporárias.
Redirect 301 transfere SEO 100% para a nova URL?+
Praticamente sim. Em 2016 o Google confirmou que 301 (e qualquer 3xx) passa link equity sem perda significativa. Mas há ressalvas: o conteúdo da nova URL precisa ser equivalente; se você redirecionar uma página de produto para a home, o Google pode tratar como soft 404 e não passar nada. Mantenha o redirect ativo por pelo menos 1 ano para a transferência se consolidar.
O que são redirect chains e por que são problema?+
Redirect chain é quando A redireciona para B, B para C, C para D. Cada hop consome crawl budget e pode diluir levemente o link equity. O Google segue até 5 hops, depois desiste. A boa prática é sempre redirecionar diretamente: se A precisa virar D, configure A → D, não A → B → C → D. Use crawlers (Screaming Frog) para encontrar e consertar.
307 e 308 são iguais ao 302 e 301?+
Quase. 301 e 302 são da especificação HTTP/1.0 e historicamente alguns clientes mudavam o método HTTP no redirect (POST virava GET). 307 (temporário) e 308 (permanente) foram introduzidos no HTTP/1.1 com a garantia de preservar o método HTTP original. Para sites web (links GET), 301/302 funcionam bem. Para APIs e formulários POST, prefira 308/307.
Posso redirecionar HTTP para HTTPS via 301?+
Sim — é a prática recomendada. Configure no servidor (Apache, Nginx, CDN) para que toda requisição HTTP retorne 301 para a versão HTTPS equivalente. Combine com header HSTS (Strict-Transport-Security) para que navegadores nem façam a requisição HTTP em visitas futuras. Para SEO, sinaliza canonicalização clara.
Por quanto tempo devo manter um redirect 301 ativo?+
O Google recomenda no mínimo 1 ano para que a transferência de equity se consolide e o índice atualize totalmente. Na prática, mantenha para sempre — o custo é zero, e remover quebra backlinks externos antigos. Em migrações grandes, considere documentar todos os redirects ativos para evitar limpezas acidentais no futuro.
Redirecionar tudo para a home é boa prática?+
Não. Quando você redireciona URLs específicas (produto, artigo, categoria) para a home, o Google geralmente trata como soft 404 — ou seja, “esta URL essencialmente não existe”. Resultado: nenhum link equity passa, e as URLs antigas são removidas do índice sem benefício. Sempre redirecione para a página equivalente, não para a home.
Como detectar redirect loops e chains no meu site?+
Use Screaming Frog ou Sitebulb para crawlar o site e gerar relatório de redirects (mostra chains com 3+ hops e loops infinitos). Para checagem pontual, curl -ILs URL mostra todos os hops e códigos. Em produção, monitore o relatório “Páginas” do Google Search Console — chains ineficientes aparecem em “URL alternativa com tag canônica adequada”.
Continue lendo
Robots.txt: Allow, Disallow, User-agent e Wildcards Explicados
Guia completo das diretivas do robots.txt: Disallow, Allow, User-agent, Sitemap, Crawl-delay, wildcards, ancoragem e regras de precedência. Com exemplos prontos por CMS.
Crawl Budget: O que é e Como Otimizar para Indexar Mais Páginas
Crawl budget é o número de URLs que o Googlebot rastreia no seu site. Aprenda como funciona, quando se preocupar, os 7 maiores desperdiçadores e o checklist completo de otimização — com exemplos reais de robots.txt, canonical, sitemap e arquitetura.
URL Amigável para SEO: Como Criar Slugs que Ranqueiam (Guia 2026)
Guia completo de URLs amigáveis: estrutura ideal, slug, hífen vs underscore, tamanho, posicionamento da keyword, hierarquia flat vs nested, padrões para multi-idioma, geração programática e os 10 erros que matam SEO.