301 vs 302 vs 307 vs 308: códigos de status de redirecionamento explicados
O que cada código de status de redirecionamento HTTP realmente significa, como redirecionamentos permanentes e temporários diferem para SEO e cache, e como ver exatamente qual código cada salto de um link retorna.
O que um código de status de redirecionamento realmente diz
Todo redirecionamento é uma resposta HTTP com um código de status na faixa 3xx e um cabeçalho Location apontando para a próxima URL. O código não é um detalhe técnico — ele diz a navegadores, crawlers e caches como tratar a mudança: se ela é permanente, se pode ser armazenada em cache e se o método e o corpo da requisição original devem ser preservados no próximo salto.
Um único link pode encadear vários desses códigos. Uma URL curta pode responder com um 301, o domínio de rastreamento por trás dela com um 302 e o site final com um 307 antes de você chegar a um 200. Ler esses códigos é a maneira mais rápida de entender o que um link realmente está fazendo.
Os quatro códigos que você vai encontrar de verdade
301 — Moved Permanently
O recurso tem uma URL nova e definitiva. Os navegadores podem armazenar um 301 em cache de forma agressiva — muitas vezes pela sessão inteira ou mais — e os mecanismos de busca o tratam como um sinal de canonização: a indexação e os sinais de ranqueamento migram para a URL de destino. Use-o para migrações, trocas de domínio e qualquer URL que você nunca pretende trazer de volta.
302 — Found (temporário)
O recurso está em outro lugar por enquanto. Os caches são cautelosos com 302s, e os mecanismos de busca mantêm a URL original indexada em vez da de destino. Historicamente, o 302 tinha uma peculiaridade: muitos clientes reescreviam requisições POST como GET no salto seguinte. É exatamente por essa ambiguidade que o 307 e o 308 existem.
307 — Temporary Redirect
Como um 302, mas estrito: o método e o corpo devem ser repetidos sem alterações no salto seguinte. Um POST continua POST. É comum ver 307s em upgrades de HSTS (um 307 interno quando um site força HTTPS) e em APIs que redirecionam escritas temporariamente.
308 — Permanent Redirect
O gêmeo permanente do 307: armazenável em cache como um 301, mas com preservação garantida de método e corpo. APIs que movem endpoints permanentemente preferem o 308 porque os clientes não podem transformar um POST em GET silenciosamente.
| Código | Nome | Permanente | Método preservado | Uso típico |
|---|---|---|---|---|
301 | Moved Permanently | Sim | POST pode virar GET | Migrações de site, URLs canônicas |
302 | Found | Não | POST pode virar GET | Links curtos, testes A/B, roteamento por geolocalização |
307 | Temporary Redirect | Não | Sim, garantido | Upgrades de HSTS, roteamento temporário de API |
308 | Permanent Redirect | Sim | Sim, garantido | Mudanças permanentes de endpoints de API |
Qual código você deve usar?
Duas perguntas decidem: a mudança é permanente e o método da requisição precisa sobreviver ao salto? Para páginas web comuns (requisições GET), a questão do método raramente importa — a divisão permanente/temporário é o que conta.
Por que a escolha importa para SEO
Os mecanismos de busca tratam redirecionamentos permanentes e temporários de forma diferente. Um 301 (ou 308) diz ao crawler que a URL antiga foi aposentada: os sinais de ranqueamento se consolidam no destino e, com o tempo, o destino substitui a origem no índice. Um 302 (ou 307) diz “continue indexando a original” — útil para links curtos e experimentos, prejudicial se você realmente se mudou para sempre.
Maneiras comuns de redirecionamentos prejudicarem um site silenciosamente:
- 302 no lugar de um 301: uma migração permanente servida como temporária divide os sinais entre duas URLs em vez de consolidá-los.
- Cadeias de redirecionamento: três, quatro, cinco saltos seguidos tornam cada visita mais lenta e desperdiçam o orçamento de crawl. Se isso acontecer com frequência, os crawlers desistem antes do destino.
- Loops de redirecionamento: A → B → A não serve nada. Os navegadores abortam após um número fixo de saltos.
- Sinais mistos: um 301 apontando para uma URL que, ela mesma, redireciona com 302 para outro lugar deixa os crawlers sem saber qual URL é canônica.
Anatomia de uma resposta de redirecionamento
Uma resposta de redirecionamento é curta — a linha de status, um cabeçalho Location e, geralmente, dicas de cache. Aqui está um redirecionamento permanente que os navegadores podem lembrar por um ano:
HTTP/2 301 Moved Permanently
location: https://new.example.com/page
cache-control: max-age=31536000
Nem todo redirecionamento é uma resposta HTTP. Tags meta refresh e redirecionamentos JavaScript (window.location) acontecem na própria página, depois que o HTML carrega. Eles são mais lentos, mais fracos para SEO e os favoritos dos kits de phishing — o primeiro salto parece inofensivo para scanners simples enquanto o script manda você para outro lugar.
Veja cada código da cadeia
Você não precisa adivinhar qual código um link retorna. O Redirect Radar rastreia a cadeia completa em um painel lateral: cada salto com seu código de status exato, método, tempo e cabeçalhos de resposta — incluindo redirecionamentos JavaScript que nunca aparecem em uma verificação HTTP simples. Cadeias longas e loops saltam aos olhos imediatamente, e o salto final recebe uma nota de segurança.
Teste no próximo link curto que você receber, ou no seu próprio site após uma migração: o primeiro salto deve ser um único 301 limpo para a URL canônica, não uma escadaria de 302s.
Os links curtos do T.LY usam redirecionamentos limpos e intencionais. Crie um link curto e depois rastreie-o com o Redirect Radar para ver o código de status exato, os cabeçalhos e o destino que o seu público vai alcançar. Comece a usar o T.LY → e ganhe 20% de desconto no primeiro mês ou em um plano anual com o código
Conclusão
Os quatro códigos de redirecionamento são um vocabulário pequeno com consequências reais: 301 e 308 aposentam uma URL e movem seus sinais de ranqueamento; 302 e 307 mantêm a original viva; 307 e 308 garantem que o método da requisição sobreviva ao salto. Escolha deliberadamente, mantenha as cadeias curtas e verifique o resultado com um rastreador em vez de presumir que a configuração fez o que você queria.