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
| Aspecto | 301 (Permanente) | 302 (Temporário) |
|---|---|---|
| Significado HTTP | Moved Permanently | Found (Temporary) |
| Transfere link equity | Sim (100%) | Não (fica na URL original) |
| Indexação | Google indexa a nova URL | Google pode manter a URL antiga |
| Cache do navegador | Navegador memoriza o redirect | Navegador verifica toda vez |
| Impacto no crawl budget | Mínimo após consolidação | Contínuo (duas URLs ativas) |
| Reversibilidade | Difícil (Google já atualizou) | Fácil (URL original preservada) |
| Uso mais comum | Migração, consolidação | Manutençã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]
Após deletar uma página com backlinks
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
Transferência de autoridade (link equity)
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ário | Tempo para transferir | Risco |
|---|---|---|
| 301 implementado corretamente | 2-4 semanas | Baixo |
| 302 de longa duração | Imprevisível (meses?) | Alto — perda de controle |
| Cadeia 301 → 301 → destino | 4-8 semanas | Médio — possível diluição |
| 301 para URL que retorna 404 | Nunca | Total — 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 → useres.redirect(301, '/nova-url') - Django:
HttpResponseRedirectusa 302 → useHttpResponsePermanentRedirect - PHP:
header('Location: /nova-url')usa 302 → adicionehttp_response_code(301)antes - WordPress:
wp_redirect()usa 302 → usewp_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ário | Status code |
|---|---|
| Formulário de pagamento que mudou de URL | 308 |
| API endpoint em manutenção | 307 |
| Upload de arquivo redirecionado | 307/308 |
| Páginas HTML normais | 301/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?
-
.htaccessnã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
-
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?
-
Teste as URLs redirecionadas manualmente com curl.
-
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
| Sinal | Provável causa | Ação |
|---|---|---|
| Queda brusca no tráfego orgânico | Redirecionamento incorreto (para URL errada) | Auditar mapeamento de URLs |
| Aumento de páginas 404 no GSC | URLs redirecionadas que levam a 404 | Verificar destinos dos redirects |
| Loop de redirecionamento reportado | Conflito entre regras | Revisar .htaccess ou config do servidor |
| URL antiga ainda no índice após 4 semanas | 302 em vez de 301 | Mudar para 301 |
| Queda de posição para keywords específicas | Relevância do destino diferente | Redirecionar para página mais relevante |
Documentação de redirecionamentos
Mantenha uma planilha com todos os redirecionamentos ativos:
| URL Origem | URL Destino | Tipo | Data | Motivo | Tráfego/mês |
|---|---|---|---|---|---|
| /blog/post-antigo/ | /blog/post-novo/ | 301 | 2026-01-15 | Otimização de slug | 150 |
| /servicos/consultoria/ | /servicos/seo/ | 301 | 2026-02-01 | Consolidação | 80 |
| /promo/black-friday/ | /ofertas/ | 302 | 2025-12-01 | Sazonal | 0 (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ção | Tipo |
|---|---|
| Mudou URL permanentemente | 301 |
| Migração de domínio | 301 |
| HTTP → HTTPS | 301 |
| Fundiu conteúdo | 301 |
| Corrigiu slug com typo | 301 |
| Removeu página com backlinks | 301 (para similar) |
| Manutenção temporária | 302 (ou 503) |
| Teste A/B | 302 |
| Conteúdo sazonal | 302 |
| Redirect geográfico | 302 |
| API com preservação de método | 307/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.