< BACK 301 vs 302 vs 307 vs 308: a matriz de decisão de códigos de redirecionamento para migrações SEO -- ilustração em arte linear

301 vs 302 vs 307 vs 308: a matriz de decisão de códigos de redirecionamento para migrações de SEO

Quatro códigos de redirecionamento HTTP, quatro comportamentos significativamente diferentes, e um erro de SEO consistente que aparece em toda migração: usar como padrão 302 porque é o que o framework acontece de emitir. Aqui está a matriz de decisão real para 301 vs 302 vs 307 vs 308, mais o custo real de acertar errado.

Ponto-chave: Use um 301 para mudanças permanentes e um 302 apenas para as genuinamente temporárias; escolher errado em uma migração custa 20-40% do tráfego orgânico em 60 dias.Use a 301 for permanent moves and a 302 only for genuinely temporary ones; picking wrong on a migration costs 20-40% of organic traffic within 60 days.

Os quatro códigos em uma frase cada

301 Moved Permanently: o redirecionamento permanente canônico. Cacheável. O método pode mudar de POST para GET. O padrão para movimentações permanentes de URL.

302 Found: redirecionamento temporário. Cacheável mas com revalidação. O método pode mudar de POST para GET. Usado por frameworks como padrão; quase nunca a chamada certa para movimentos permanentes de SEO.

307 Temporary Redirect: como 302 mas o método é preservado. POST continua POST. Usado para movimentos temporários onde o método importa (raro em SEO de marketing site; comum em APIs).

308 Permanent Redirect: como 301 mas o método é preservado. POST continua POST. O substituto da era HTTP/2 para 301 quando a preservação de método importa. Frameworks modernos (Next.js, Vercel) emitem 308 por padrão para chamadas redirect().Next.js, Vercel) emit 308 by default for redirect() calls.

Por que isso importa para SEO

Google declarou publicamente que 301 e 308 transferem o sinal completo de PageRank. 302 e 307 transferem de forma menos confiável, a suposição incorporada na interpretação do Google é que um redirecionamento temporário aponta para um destino temporário, então o sinal canônico deve permanecer na URL original. Em uma migração, isso é exatamente o oposto: você quer que o sinal canônico se mova.

Impacto no mundo real: um site que implementa redirecionamentos de migração como 302 em vez de 301 normalmente perde 20-40% do tráfego orgânico nos primeiros 60 dias após a transição. A correção não é sutil, mas também nem sempre é detectada porque os 302s funcionam para os usuários (o navegador os segue, a página carrega). O Search Console sinaliza o problema no relatório de Coverage sob "Page with redirect", mas a maioria das equipes ignora esse relatório durante o pânico pós-transição.

A matriz de decisão

Três perguntas. Responda-as em ordem; o resultado determina o código.

Pergunta 1: O movimento é permanente?

Se sim (a URL está se movendo para sempre, a URL antiga não retornará): use 301 ou 308. Se não (a URL retornará, isso é temporário): use 302 ou 307.

Pergunta 2: A URL está recebendo solicitações POST?

Se sim (envios de formulário, chamadas de API, POSTs JSON): use 307 ou 308 (método preservado). Se não (navegação do navegador, clique em link): 302 ou 301 funcionam bem.

Pergunta 3: Qual é o padrão do framework?

Pilhas modernas: Next.js redirect() emite 308 por padrão, vercel.json [[redirects]] usam 308 a menos que permanent: false seja definido, Netlify _redirects usam 301 a menos que explicitamente informado o contrário. Apache mod_rewrite usa 302 por padrão, o que pega todo mundo na primeira vez. Sempre verifique o padrão do seu framework antes de contar com ele.Netlify _redirects use 301 unless explicitly told otherwise. Apache mod_rewrite uses 302 by default which catches everyone the first time. Always check your framework's default before relying on it.

Os quatro erros mais comuns

  • Usar 302 por padrão porque Apache/Express/Flask emitem isso como padrão para o helper redirect(). Solução: defina explicitamente 301 em todas as regras de redirecionamento para uma movimentação permanente.
  • Usar 307 pensando que é o 301 moderno. Não é, 307 é o 302 moderno (temporário, que preserva o método). Para movimentações permanentes use 308 ou 301.
  • Misturar 301 e 302 no mesmo mapa de redirecionamento. Escolha um (301 para migrações) e use-o em todos os lugares; códigos mistos confundem o relatório do Search Console.
  • Esquecer que 308 preserva o método POST. Se sua URL antiga era um endpoint de envio de formulário e você a redireciona com 308 para a nova URL, os dados POST fluem. Se você usar 301, o navegador converte POST para GET e o envio do formulário é perdido. Conhecer a diferença evita uma classe real de bugs.

Quando usar qual, na prática

Redirecionamentos de migração (domínio antigo → novo domínio, slug antigo → novo slug): use 301. O mais simples, mais amplamente suportado e explicitamente declarado pelo Google como uma transferência completa de PageRank.

Movimentações permanentes onde a preservação de método importa (endpoints POST, envios de formulário): use 308. A transferência de PageRank é idêntica a 301; a única diferença é que POST permanece POST.

Movimentações temporárias (teste A/B, redirecionamentos geográficos, manutenção): use 302. A transferência de PageRank reduzida é o comportamento correto porque a URL de origem deve manter seu sinal de classificação.

Movimentos temporários com preservação de método (endpoints de API sob failover temporário): use 307.

Como configurar cada código em plataformas comuns

Vercel (vercel.json)

Bloco [[redirects]]. Configure permanent: true para 308 (padrão), permanent: false para 307. Para forçar 301 use statusCode: 301 explicitamente. A maioria dos deploys modernos do Vercel padronizam 308, o que funciona bem para migrações; a escolha conservadora para SEO é 301 para máxima compatibilidade com crawlers e indexadores mais antigos.

Netlify (netlify.toml ou _redirects)

Sintaxe _redirects: /old-url /new-url 301 para permanente, /old-url /new-url 302 para temporário. Adicione ! para forçar o status: /old-url /new-url 301!.

Apache (.htaccess)

Redirect 301 /old-url /new-url para permanente. RewriteRule com flag [R=301,L] para redirects em estilo rewrite.

Nginx

return 301 https://example.com/new-url; dentro de um bloco location. Para correspondência de padrões: rewrite ^/old/(.*)$ /new/$1 permanent; (a flag permanent emite 301; a flag redirect emite 302).

Verificando os códigos em produção

Três comandos que todo engenheiro deve manter na memória muscular. curl -I https://example.com/old-url retorna o código de status nos headers da resposta. curl -ILk segue redirects e loga cada código de status pelo caminho (pega cadeias).

Para verificação em massa em centenas de URLs, é scriptável: um loop fetch do Node.js que lê um CSV de URLs antigas e loga status + destino final. Ou use o endpoint DataForSEO on-page Instant Pages, que retorna o rastreamento completo de redirect.

O resumo

301 para movimentações permanentes (padrão para migrações SEO). 308 quando a preservação de método importa e a movimentação é permanente. 302 para movimentações temporárias. 307 para movimentações temporárias com preservação de método. Os padrões do framework nem sempre estão certos; verifique-os no momento do deploy.

Leitura relacionada: 410 vs 404 cobre o caso de aposentadoria (URLs desaparecendo para sempre, não sendo movidas). A mesma migração geralmente precisa de ambas as decisões.

Perguntas frequentes

Qual é a diferença entre um redirecionamento 301 e um 302?

Um 301 é um redirecionamento permanente; um 302 é temporário. Use 301 quando uma URL mudou para sempre, porque passa sinais de ranking para a nova URL. Use 302 apenas para mudanças genuinamente temporárias. Usar um 302 para uma mudança permanente é o erro de redirecionamento mais comum e custoso.

Quando devo usar um redirecionamento 307 ou 308?

São os equivalentes estritos HTTP/1.1 de 302 e 301 que preservam o método da requisição. Use 308 para redirecionamentos permanentes onde o método não deve mudar, e 307 para os temporários. Para movimentações padrão de páginas um 301 ainda é a escolha convencional e segura.

Qual redirecionamento é melhor para SEO?

Um 301 para mudanças permanentes. Passa o máximo de sinal de ranking para o destino e avisa aos mecanismos de busca para atualizar a URL indexada. O código errado, geralmente um 302 deixado em uma mudança permanente, pode manter o Google rastreando a URL antiga por meses e dividir seus sinais.

Um redirecionamento bem escolhido passa quase todo o seu sinal de ranking, então a perda é negligenciável. O dano real vem de cadeias de redirecionamento, onde A aponta para B que aponta para C. Achate cadeias para um único salto para que equity e orçamento de rastreamento não sejam desperdiçados.

< BACK