Redirecionamento 301 vs 302: qual usar (e quando isso importa para SEO)
Um redirecionamento envia visitantes e mecanismos de busca de uma URL para outra. Para uma pessoa, o resultado parece o mesmo, seja qual for o tipo usado. Para os mecanismos de busca, o tipo é um sinal: "esta página mudou de endereço definitivamente" ou "esta página está temporariamente em outro lugar". Escolher o tipo errado raramente quebra um site da noite para o dia, mas pode atrasar o momento em que o Google transfere as posições para o novo endereço e influenciar qual URL ele mostra nos resultados.
301 vs 302 em uma frase cada
- 301 Moved Permanently: a URL antiga deixou de existir de vez; use a nova a partir de agora. Os mecanismos de busca tratam isso como um sinal forte de que o destino deve ser a URL indexada e canônica.
- 302 Found (temporário): o conteúdo está temporariamente em outro endereço; a URL original continua sendo a principal. Os mecanismos de busca tendem a manter a URL original no índice.
Se você está alterando uma URL e não pretende voltar atrás, use 301. Se for voltar ao endereço original (página de manutenção, promoção curta, teste A/B, produto sem estoque apontando temporariamente para outro lugar), use 302.
Todos os tipos de redirecionamento em resumo
| Tipo | Significado | Método da requisição no redirecionamento | Uso típico |
|---|---|---|---|
| 301 | Permanente | Os navegadores podem trocar POST por GET | Mudanças de URL, migrações de domínio, HTTP→HTTPS |
| 302 | Temporário | Os navegadores podem trocar POST por GET | Mudanças temporárias, roteamento por região ou idioma, testes |
| 303 | Ver outro | Sempre GET | Após o envio de um formulário ("post/redirect/get") |
| 307 | Temporário | Método e corpo mantidos | Redirecionamentos temporários de APIs e formulários |
| 308 | Permanente | Método e corpo mantidos | Mudanças permanentes em que POST deve continuar sendo POST |
| Meta refresh | Tag HTML, atraso de 0 ou mais | - | Quando você não consegue configurar o servidor |
| JavaScript | window.location em um script | - | Single-page apps, último recurso |
Para SEO, a documentação do Google agrupa 301 e 308 como permanentes, e 302, 303 e 307 como temporários. A diferença entre 301 e 308 (ou entre 302 e 307) importa para navegadores e APIs, não para o ranqueamento.
Como o Google trata os redirecionamentos
O Google descreve os redirecionamentos permanentes no servidor como um sinal forte para escolher a URL canônica, e os temporários como um sinal fraco. Na prática:
- Com um 301/308, o Google normalmente substitui a URL antiga pela nova nos resultados e consolida sinais como os links apontando para o destino.
- Com um 302/307, o Google normalmente continua mostrando a URL antiga por um tempo, porque você indicou que a mudança é temporária.
- Se um 302 permanece por muito tempo e o destino parece uma substituição permanente, o Google pode acabar tratando-o como permanente. Não é uma boa ideia depender disso: se a mudança é permanente, indique isso com um 301.
- Meta refresh com atraso zero geralmente é entendido como redirecionamento permanente; com atraso, é tratado como temporário. Redirecionamentos em JavaScript só funcionam depois que a página é renderizada, o que acontece mais tarde e é menos confiável. Use ambos apenas quando os redirecionamentos no servidor forem impossíveis.
O redirecionamento é apenas um sinal de canonicalização entre vários, junto com a tag rel=canonical, os links internos e os sitemaps. Mantenha-os consistentes; veja endereço canônico para entender como eles funcionam em conjunto.
Quando a escolha realmente importa
- Migração de site ou mudança de domínio: sempre 301 (ou 308). Um 302 aqui pode manter as URLs antigas nos resultados por mais tempo e atrasar a transferência de sinais.
- HTTP → HTTPS e www ↔ sem www: 301, uma vez por URL, direto para a versão final. São decisões permanentes.
- Produto ou artigo excluído com um substituto próximo: 301 para o substituto. Se não houver um equivalente real, um 404 ou 410 é mais honesto do que um redirecionamento para a página inicial, que o Google pode tratar como soft 404 de qualquer forma.
- Páginas sazonais ou de produtos sem estoque que vão voltar: 302 ou, melhor ainda, mantenha a página no ar com um aviso.
- Detecção de idioma ou país: redirecionamentos temporários são comuns, mas não force o redirecionamento de crawlers de mecanismos de busca para fora das suas versões de idioma; vincule as versões com hreflang.
Cadeias e loops
Uma cadeia é um redirecionamento que leva a outro redirecionamento: http://example.com/page → https://example.com/page → https://www.example.com/page → https://www.example.com/new-page. Cada salto adiciona uma ida e volta para o visitante. O Google segue um número limitado de saltos (a documentação dele menciona até 10) e pode parar antes do fim de uma cadeia longa. Corrija as cadeias apontando cada URL antiga diretamente para o endereço final e atualizando os links internos para ele.
Um loop é uma cadeia que volta ao próprio início: A → B → A. Os navegadores exibem o erro "muitos redirecionamentos" e a página fica inacessível para todos, inclusive para os crawlers. Os loops costumam surgir quando duas regras se contradizem, por exemplo quando a CDN força HTTP e o servidor força HTTPS.
Como configurar um 301
Configure os redirecionamentos no servidor ou no seu CMS, não no código da página. Os dois servidores web mais comuns:
# Apache (.htaccess)
Redirect 301 /old-page/ https://example.com/new-page/
# Nginx
location = /old-page/ { return 301 https://example.com/new-page/; }
No WordPress e na maioria dos outros CMSs, um plugin de redirecionamento ou o gerenciador de redirecionamentos integrado faz o mesmo sem precisar editar arquivos do servidor. Se o site está atrás de uma CDN, as regras de redirecionamento dela são executadas antes de a requisição chegar ao seu servidor: é prático, mas lembre-se de que elas existem quando for depurar. Em uma mudança de domínio completa, redirecione cada caminho para o mesmo caminho no novo domínio, em vez de enviar tudo para a página inicial. Seja qual for o método, verifique o resultado de fora: um erro de digitação em uma regra pode retornar 302 sem você perceber, criar um loop ou redirecionar páginas que você não pretendia alterar.
Como verificar um redirecionamento
Não confie na barra de endereços do navegador: os navegadores armazenam redirecionamentos 301 em cache de forma agressiva, então, depois de alterar uma regra, você pode continuar vendo o comportamento antigo. Verifique pelo lado do servidor:
- O verificador de redirecionamentos segue a cadeia inteira e mostra cada salto com o código de status, para você identificar 302 onde esperava 301, saltos extras e loops.
- O verificador de status HTTP mostra o código exato de uma única URL e o destino final dela.
- Pelo terminal:
curl -I https://example.com/old-pagemostra o status e o cabeçalhoLocation.
Um guia passo a passo para ler cadeias e encontrar a origem delas está em como verificar redirecionamentos e cadeias de redirecionamento.
Checklist de migração
- Exporte uma lista completa das URLs antigas: de um crawl, do sitemap, do analytics e do Search Console (primeiro as páginas com tráfego e backlinks).
- Mapeie cada URL antiga para o equivalente novo mais próximo, de um para um. Evite enviar tudo para a página inicial.
- Implemente redirecionamentos 301 no servidor, não com meta refresh nem JavaScript.
- Combine as mudanças de protocolo, host e caminho em um único salto sempre que possível.
- Atualize links internos, tags canonical, hreflang e o sitemap para as novas URLs, de modo que os redirecionamentos atendam apenas links externos e favoritos.
- Teste uma amostra de URLs antigas (incluindo as com parâmetros e barras finais) com o verificador de redirecionamentos antes e logo após o lançamento.
- Em uma mudança de domínio, use a ferramenta Mudança de endereço do Google Search Console e mantenha os redirecionamentos por bastante tempo: o Google recomenda pelo menos um ano.
- Acompanhe o Search Console para ver erros 404 e de redirecionamento nas semanas seguintes.