Redirecionamentos 301 vs 302: Quando Usar Cada Um

· 22 min de leitura · Por Fabio Santiago

A diferença fundamental

Um redirecionamento diz ao navegador e ao Google: “essa URL mudou, vá para outra”. A diferença entre 301 e 302 está na permanência:

  • 301 (Moved Permanently): a URL antiga não existe mais. A nova é a definitiva. O Google transfere a autoridade (link equity) para a nova URL.
  • 302 (Found / Temporary Redirect): a mudança é temporária. A URL antiga ainda é a principal. O Google pode manter a URL antiga no índice.

Na prática, o 301 diz “mude seus registros” e o 302 diz “é temporário, volte depois”.

Tabela comparativa completa

Aspecto301 (Permanente)302 (Temporário)
Significado HTTPMoved PermanentlyFound (Temporary)
Transfere link equitySim (100%)Não (fica na URL original)
IndexaçãoGoogle indexa a nova URLGoogle pode manter a URL antiga
Cache do navegadorNavegador memoriza o redirectNavegador verifica toda vez
Impacto no crawl budgetMínimo após consolidaçãoContínuo (duas URLs ativas)
ReversibilidadeDifícil (Google já atualizou)Fácil (URL original preservada)
Uso mais comumMigração, consolidaçãoManutenção, teste A/B

Quando usar 301

Migração de domínio

Mudou de siteantigo.com para sitenovo.com? Todos os redirecionamentos devem ser 301. Essa é a situação mais crítica — você está dizendo ao Google para transferir toda a autoridade acumulada para o novo endereço.

Regra de ouro da migração: cada URL antiga deve ter um 301 correspondente para a URL equivalente no novo domínio. Redirecionar tudo para a homepage é um dos erros mais graves em SEO (tratado como soft 404 pelo Google).

# Migração completa de domínio (.htaccess no site antigo)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?siteantigo\.com$ [NC]
RewriteRule ^(.*)$ https://sitenovo.com/$1 [R=301,L]

Mudança de URL permanente

Alterou /blog/post-antigo para /blog/post-novo-otimizado? Use 301.

Situações comuns:

  • Correção de slug com typo: /blog/comoo-usar/blog/como-usar
  • Otimização de URL para SEO: /blog/p123/blog/guia-completo-seo-tecnico
  • Reorganização de categorias: /noticias/tech/artigo/blog/tecnologia/artigo

Consolidação de conteúdo

Fundiu três artigos similares em um guia completo? Redirecione os três antigos para o novo com 301.

Exemplo prático:

/blog/o-que-e-seo/           → 301 → /blog/guia-completo-seo/
/blog/seo-para-iniciantes/   → 301 → /blog/guia-completo-seo/
/blog/introducao-ao-seo/     → 301 → /blog/guia-completo-seo/

Isso consolida a autoridade (backlinks) de três páginas em uma, criando uma página mais forte que qualquer uma das originais.

HTTP para HTTPS

A migração para HTTPS deve usar 301 para todas as URLs HTTP. Essa é uma das implementações mais importantes e frequentes:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Com www para sem www (ou vice-versa)

Escolha uma versão e redirecione a outra com 301:

# Redirecionar www para sem www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Se uma página recebeu backlinks externos mas o conteúdo não é mais relevante, não retorne 404 — redirecione com 301 para a página mais próxima em tema. Assim você preserva o link equity em vez de desperdiçá-lo.

Quando usar 302

Manutenção temporária

Seu site está em manutenção por algumas horas? Redirecione para uma página de aviso com 302. Quando o site voltar, remova o redirecionamento e a URL original continua intacta no índice.

Importante: para manutenção planejada, considere usar o status 503 (Service Unavailable) com header Retry-After em vez de 302. O 503 informa explicitamente ao Google que a indisponibilidade é temporária.

# Manutenção com 503 (melhor que 302 para este caso)
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/manutencao\.html$
RewriteRule ^(.*)$ /manutencao.html [R=503,L]
Header always set Retry-After "3600"

Teste A/B

Está testando uma versão diferente de uma landing page? Use 302 para que o Google mantenha a URL original no índice.

Cuidado: se o teste A/B durar mais de 3-6 meses, o Google pode começar a tratar o 302 como 301 automaticamente. Defina prazo para seus testes.

Conteúdo sazonal

Uma página de Black Friday que redireciona para a home fora da temporada. Quando a Black Friday voltar, a URL original precisa estar preservada.

# Redirecionamento sazonal
RewriteRule ^black-friday/?$ /ofertas/ [R=302,L]

Redirecionamento geográfico

Enviando usuários do Brasil para /br/ e de Portugal para /pt/? Use 302, pois a URL original ainda é válida.

Redirecionamento de dispositivo

Embora não recomendado (responsive design é melhor), se você redireciona mobile para m.seusite.com, use 302 — a URL desktop ainda é a principal.

O impacto no SEO

Com o 301, o Google transfere a maior parte da autoridade (link equity) da URL antiga para a nova. Historicamente dizia-se que havia uma perda de 15%, mas o Google confirmou que 301s passam o PageRank completo.

Com o 302, a autoridade fica na URL antiga. Se o redirecionamento durar muito tempo, o Google pode eventualmente tratá-lo como 301 — mas você perde o controle sobre quando isso acontece.

Timeline de transferência de autoridade:

CenárioTempo para transferirRisco
301 implementado corretamente2-4 semanasBaixo
302 de longa duraçãoImprevisível (meses?)Alto — perda de controle
Cadeia 301 → 301 → destino4-8 semanasMédio — possível diluição
301 para URL que retorna 404NuncaTotal — autoridade perdida

Indexação

Com 301: o Google remove a URL antiga do índice e adiciona a nova. O processo pode levar de dias a semanas, dependendo da frequência de rastreamento do seu site.

Com 302: o Google pode manter a URL antiga no índice. Ou pode indexar a nova. O comportamento é inconsistente e difícil de prever. Essa incerteza é o principal motivo para sempre usar 301 quando a mudança é permanente.

Crawl budget

Cada redirecionamento consome uma requisição do crawler. Cadeias de redirecionamento (301 → 301 → 301) consomem três requisições para chegar ao destino. Mantenha redirecionamentos diretos.

Leia também: O Que é Crawl Budget e Por Que Você Deveria Se Preocupar

Impacto nos Core Web Vitals

Redirecionamentos adicionam latência à experiência do usuário. Cada redirect adiciona pelo menos um round-trip de rede (50-200ms). Cadeias longas podem impactar significativamente o LCP (Largest Contentful Paint).

Os erros que destroem seu SEO

Usar 302 quando deveria ser 301

O erro mais comum. Desenvolvedores frequentemente usam 302 como padrão porque é mais fácil de implementar em alguns frameworks. Resultado: a autoridade fica presa na URL antiga que não existe mais.

Como detectar: rastreie seu site com Screaming Frog e filtre por status 302. Revise cada 302 e pergunte: “essa mudança é realmente temporária?” Se não, mude para 301.

Frameworks que usam 302 por padrão:

  • Express.js: res.redirect() usa 302 por padrão → use res.redirect(301, '/nova-url')
  • Django: HttpResponseRedirect usa 302 → use HttpResponsePermanentRedirect
  • PHP: header('Location: /nova-url') usa 302 → adicione http_response_code(301) antes
  • WordPress: wp_redirect() usa 302 → use wp_redirect($url, 301)

Cadeias de redirecionamento

/url-a → 301 → /url-b → 301 → /url-c → 301 → /url-d

O Googlebot segue até 10 redirecionamentos, mas cada salto desperdiça crawl budget e pode diluir autoridade. Corrija para: /url-a → 301 → /url-d.

Como cadeias se formam: geralmente por migrações acumuladas ao longo dos anos. O site migrou de HTTP para HTTPS (redirect 1), depois mudou a estrutura de URLs (redirect 2), depois consolidou conteúdo (redirect 3). Ninguém atualizou os redirects antigos para apontar direto ao destino final.

Auditoria de cadeias:

# Verificar cadeia de uma URL
curl -sIL "https://seusite.com/url-antiga" | grep -E "^(HTTP|Location)"

# Resultado esperado (limpo):
# HTTP/2 301
# Location: https://seusite.com/url-nova
# HTTP/2 200

# Resultado problemático (cadeia):
# HTTP/1.1 301
# Location: https://seusite.com/url-b
# HTTP/1.1 301
# Location: https://seusite.com/url-c
# HTTP/1.1 301
# Location: https://seusite.com/url-d
# HTTP/2 200

Loops de redirecionamento

/url-a → 302 → /url-b → 302 → /url-a

Resulta em erro para o usuário (ERR_TOO_MANY_REDIRECTS) e o Googlebot desiste de rastrear. Loops são frequentemente causados por conflitos entre regras no .htaccess ou configurações de CDN/proxy.

Causas comuns de loops:

  • Conflito entre regra de HTTPS e regra de www no .htaccess.
  • CDN que força HTTPS enquanto o servidor redireciona para HTTPS também.
  • Plugin de cache WordPress conflitando com regras de redirect.
  • Redirecionamento no aplicação + redirecionamento no servidor web.

Redirecionamento de todas as páginas para a home

Durante uma migração mal executada, todas as URLs antigas redirecionam para a homepage. O Google perde a correspondência entre conteúdo antigo e novo, e trata como soft 404.

Cada URL antiga deve redirecionar para a URL nova equivalente, não para a home.

Consequências:

  • Perda massiva de ranking para todas as páginas (exceto a home).
  • Links externos que apontavam para páginas específicas perdem valor.
  • Recuperação pode levar meses mesmo após correção.

Não remover redirecionamentos antigos

Com o tempo, o acúmulo de regras de redirecionamento pode tornar o servidor lento. Revise periodicamente e remova redirecionamentos que não recebem mais tráfego (após 1-2 anos).

Boa prática: mantenha uma planilha ou documento com todos os redirects ativos, data de criação e motivo. Revise trimestralmente.

Redirect com URL relativa em vez de absoluta

# Errado (pode causar loops com CDN/proxy)
Redirect 301 /pagina-antiga /pagina-nova

# Correto (URL absoluta)
Redirect 301 /pagina-antiga https://seusite.com/pagina-nova

Como implementar

Apache (.htaccess)

# 301 - Permanente (URL específica)
Redirect 301 /url-antiga https://seusite.com/url-nova

# 302 - Temporário
Redirect 302 /pagina-manutencao https://seusite.com/aviso

# Redirecionamento com regex (múltiplas URLs)
RewriteEngine On
RewriteRule ^blog/antigo/(.*)$ /blog/novo/$1 [R=301,L]

# Forçar HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Redirecionar domínio inteiro
RewriteCond %{HTTP_HOST} ^(www\.)?dominio-antigo\.com$ [NC]
RewriteRule ^(.*)$ https://dominio-novo.com/$1 [R=301,L]

Ferramenta útil: Use nosso Gerador de .htaccess para criar regras de redirecionamento profissionais sem erros de sintaxe.

Nginx

# 301 - URL específica
location = /url-antiga {
    return 301 https://seusite.com/url-nova;
}

# 302 - Temporário
location = /pagina-temp {
    return 302 https://seusite.com/aviso;
}

# 301 - Pattern matching
location ~* ^/blog/antigo/(.*) {
    return 301 https://seusite.com/blog/novo/$1;
}

# Forçar HTTPS
server {
    listen 80;
    server_name seusite.com www.seusite.com;
    return 301 https://seusite.com$request_uri;
}

# Redirecionar www para sem www
server {
    listen 443 ssl;
    server_name www.seusite.com;
    return 301 https://seusite.com$request_uri;
}

Node.js (Express)

// 301 - Permanente
app.get('/url-antiga', (req, res) => {
  res.redirect(301, '/url-nova');
});

// 302 - Temporário (padrão do Express)
app.get('/temp', (req, res) => {
  res.redirect('/destino'); // 302 implícito
});

// Middleware para múltiplos redirects
const redirects = {
  '/blog/post-antigo': '/blog/post-novo',
  '/servicos/antigo': '/servicos/novo',
};

app.use((req, res, next) => {
  if (redirects[req.path]) {
    return res.redirect(301, redirects[req.path]);
  }
  next();
});

PHP

<?php
// 301 - Permanente
http_response_code(301);
header('Location: https://seusite.com/url-nova');
exit;

// 302 - Temporário
http_response_code(302);
header('Location: https://seusite.com/aviso');
exit;
?>

WordPress (functions.php)

function custom_redirects() {
  $redirects = [
    '/url-antiga/' => '/url-nova/',
    '/blog/post-antigo/' => '/blog/post-novo/',
  ];

  $request = $_SERVER['REQUEST_URI'];
  if (isset($redirects[$request])) {
    wp_redirect($redirects[$request], 301);
    exit;
  }
}
add_action('template_redirect', 'custom_redirects');

JavaScript (não recomendado para SEO)

window.location.replace('https://seusite.com/nova');

Redirecionamentos via JavaScript dependem de renderização. O Googlebot pode não executar, especialmente na primeira onda de rastreamento. Sempre use redirecionamentos no lado do servidor.

Meta refresh (não recomendado)

<meta http-equiv="refresh" content="0;url=https://seusite.com/nova" />

O Google trata meta refresh com delay 0 como 301, mas é uma prática obsoleta. Use server-side redirects.

E o 307 e 308?

  • 307 (Temporary Redirect): equivalente ao 302, mas garante que o método HTTP (GET, POST) é preservado. Útil para APIs e formulários.
  • 308 (Permanent Redirect): equivalente ao 301, preservando o método HTTP.

Para SEO, 301 e 302 cobrem 99% dos casos. 307 e 308 são relevantes para APIs e formulários.

Quando usar 307/308:

CenárioStatus code
Formulário de pagamento que mudou de URL308
API endpoint em manutenção307
Upload de arquivo redirecionado307/308
Páginas HTML normais301/302 (sempre)

Como auditar redirecionamentos

Com curl (linha de comando)

# Verificar uma URL
curl -sIL "https://seusite.com/url-antiga" | grep -E "^(HTTP|Location)"

# Verificar múltiplas URLs de um arquivo
while read url; do
  echo "=== $url ==="
  hops=$(curl -sIL "$url" | grep -c "^HTTP")
  echo "Saltos: $((hops - 1))"
  curl -sIL "$url" | grep -E "^(HTTP|Location)"
  echo ""
done < urls.txt

Com Screaming Frog

Configure para rastrear seu site e filtre por “Redirect (3xx)“. Identifique cadeias, loops e redirecionamentos incorretos.

Relatórios úteis:

  • Redirect Chains: mostra todas as cadeias de mais de 1 salto.
  • Redirect Loops: identifica loops automaticamente.
  • 302 Redirects: lista todos os 302s para revisão.

No Search Console

Em Indexação > Páginas, procure por “Redirecionada” e verifique se os destinos estão corretos. O GSC também alerta quando detecta:

  • Redirecionamentos para páginas 404.
  • Cadeias longas de redirecionamento.
  • URLs canônicas que redirecionam.

Checklist de auditoria de redirecionamentos

  • Todos os 302 são realmente temporários?
  • Existem cadeias com mais de 1 salto?
  • Existem loops de redirecionamento?
  • Migração HTTP→HTTPS está com 301?
  • www e sem-www estão consolidados com 301?
  • URLs antigas com backlinks estão redirecionadas?
  • Redirects usam URLs absolutas?
  • .htaccess não tem regras conflitantes?

Perguntas frequentes sobre redirecionamentos

301 passa 100% do PageRank?

Sim. O Google confirmou em 2016 que redirecionamentos 301 passam o PageRank completo, sem perda dos 15% que eram mencionados anteriormente. No entanto, isso não significa que o ranking da nova URL será idêntico — outros fatores (relevância do conteúdo, sinais de usuário) também influenciam.

Quanto tempo leva para o Google processar um 301?

Depende da frequência de rastreamento do seu site. Para sites com alto crawl rate, pode ser questão de dias. Para sites menores, pode levar 2-4 semanas. Você pode acelerar usando “Solicitar indexação” no GSC.

Posso reverter um 301?

Tecnicamente sim, mas é complicado. Quando você implementa um 301, o Google transfere a autoridade e remove a URL antiga do índice. Se você reverter, o Google precisa “re-descobrir” a URL antiga e transferir a autoridade de volta. Isso pode levar meses e não é garantido que a autoridade retorne completamente.

302 de longa duração vira 301?

O Google pode decidir tratar um 302 de longa duração como 301, mas você não tem controle sobre quando isso acontece. Pode levar meses. Enquanto isso, a autoridade fica presa na URL original. Se a mudança é permanente, use 301 desde o início.

Quantos redirecionamentos o Google segue?

O Googlebot segue até 10 redirecionamentos em cadeia antes de desistir. Navegadores também têm limites (geralmente 20). Na prática, qualquer cadeia com mais de 2 saltos é problemática.

Devo redirecionar páginas 404?

Se a página 404 tinha backlinks ou tráfego, sim — redirecione com 301 para a página mais relevante. Se era uma página sem valor (sem backlinks, sem tráfego), um 404 limpo é aceitável. O Google lida bem com 404s legítimos.

Redirecionamento via Cloudflare funciona para SEO?

Sim. O Cloudflare Page Rules permite criar redirecionamentos 301 e 302 no nível de CDN, antes mesmo de chegar ao servidor. São processados normalmente pelo Googlebot.

Monitoramento pós-implementação

Implementar redirecionamentos é apenas o primeiro passo. Monitorar o impacto é essencial para garantir que não houve problemas.

Primeira semana após implementação

  1. Verifique o Google Search Console diariamente:

    • Novos erros de rastreamento (404s, loops)?
    • A cobertura de indexação mudou?
    • As estatísticas de rastreamento mostram anomalias?
  2. Teste as URLs redirecionadas manualmente com curl.

  3. Monitore o tráfego orgânico — uma queda abrupta pode indicar redirecionamentos incorretos.

Primeira mês após implementação

  • Compare o tráfego orgânico com o período anterior à implementação.
  • Verifique se as novas URLs estão sendo indexadas (Inspeção de URL no GSC).
  • Confirme que as URLs antigas foram removidas do índice.
  • Revise a distribuição de impressões e cliques por URL.

Sinais de problema

SinalProvável causaAção
Queda brusca no tráfego orgânicoRedirecionamento incorreto (para URL errada)Auditar mapeamento de URLs
Aumento de páginas 404 no GSCURLs redirecionadas que levam a 404Verificar destinos dos redirects
Loop de redirecionamento reportadoConflito entre regrasRevisar .htaccess ou config do servidor
URL antiga ainda no índice após 4 semanas302 em vez de 301Mudar para 301
Queda de posição para keywords específicasRelevância do destino diferenteRedirecionar para página mais relevante

Documentação de redirecionamentos

Mantenha uma planilha com todos os redirecionamentos ativos:

URL OrigemURL DestinoTipoDataMotivoTráfego/mês
/blog/post-antigo//blog/post-novo/3012026-01-15Otimização de slug150
/servicos/consultoria//servicos/seo/3012026-02-01Consolidação80
/promo/black-friday//ofertas/3022025-12-01Sazonal0 (fora de época)

Essa documentação facilita auditorias futuras e evita que redirects se acumulem sem controle.

Migração de site: checklist completo de redirecionamentos

Se você está planejando uma migração de site (domínio, HTTPS, ou reestruturação de URLs), siga este checklist:

Antes da migração

  • Mapear todas as URLs do site atual (exportar do GSC ou rastrear com Screaming Frog)
  • Criar planilha de mapeamento: URL antiga → URL nova
  • Verificar que todas as URLs importantes têm destino definido
  • Testar redirecionamentos em ambiente de staging
  • Informar o Google sobre mudança de domínio (GSC > Configurações > Mudança de endereço)

Durante a migração

  • Implementar todos os 301 redirecionamentos
  • Verificar que não há loops ou cadeias
  • Testar 10-20 URLs aleatórias com curl
  • Confirmar que o sitemap.xml foi atualizado com as novas URLs
  • Confirmar que canonical tags apontam para as novas URLs

Após a migração

  • Enviar novo sitemap no GSC
  • Usar “Solicitar indexação” para as páginas mais importantes
  • Monitorar tráfego diariamente por 2 semanas
  • Verificar cobertura de indexação no GSC após 1 semana
  • Auditar novamente após 1 mês — todas as URLs novas estão indexadas?
  • Manter os 301s ativos por no mínimo 1 ano (idealmente permanente)

Resumo prático

SituaçãoTipo
Mudou URL permanentemente301
Migração de domínio301
HTTP → HTTPS301
Fundiu conteúdo301
Corrigiu slug com typo301
Removeu página com backlinks301 (para similar)
Manutenção temporária302 (ou 503)
Teste A/B302
Conteúdo sazonal302
Redirect geográfico302
API com preservação de método307/308
Não sabe?301 (na dúvida, 301 é mais seguro)

Na dúvida entre 301 e 302, escolha 301. O custo de usar 302 quando deveria ser 301 é maior do que o contrário. Um 301 indevido pode ser revertido (com dificuldade); um 302 indevido desperdiça autoridade indefinidamente.

Gratuito

Gostou deste artigo?

Receba dicas exclusivas de SEO, novas ferramentas e guias toda semana. Sem spam — apenas conteúdo útil.

Sem spam. Cancele quando quiser.