O que são os códigos de redirecionamento?
A placa de desvio da web
Imagine que você vai ao seu restaurante favorito, mas há uma placa na porta: "Nós mudamos para a Rua Principal, 123." Você não desiste: apenas segue o novo endereço. É isso que um redirecionamento 3xx faz na web.
Quando um servidor responde com um código de status 3xx, ele está dizendo ao cliente: "O que você procura não está aqui: mas eu vou te dizer onde encontrar." O cliente (geralmente um navegador) então segue automaticamente a nova localização.
Como os redirecionamentos funcionam
Uma resposta de redirecionamento tem duas partes essenciais:
- Um código de status 3xx: diz ao cliente que é um redirecionamento
- Um header
Location: diz ao cliente para onde ir
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/new-page
O navegador lê o header Location e automaticamente faz uma nova requisição para aquela URL. O usuário geralmente nem percebe: acontece em milissegundos.
O fluxo do redirecionamento
Veja o que acontece passo a passo:
Cliente Servidor
| |
| GET /old-page HTTP/1.1 |
|------------------------------>|
| |
| 301 Moved Permanently |
| Location: /new-page |
|<------------------------------|
| |
| GET /new-page HTTP/1.1 |
|------------------------------>|
| |
| 200 OK |
| (conteúdo real) |
|<------------------------------|
Note: o cliente faz duas requisições. A primeira recebe o redirecionamento, a segunda recebe o conteúdo real. Por isso redirecionamentos excessivos deixam o carregamento da página mais lento.
A família 3xx em resumo
Nem todos os redirecionamentos são iguais. A faixa 3xx inclui vários códigos, cada um com comportamento diferente:
| Código | Nome | Comportamento Principal |
|---|---|---|
| 301 | Moved Permanently | Redirecionamento permanente: navegadores fazem cache |
| 302 | Found | Redirecionamento temporário: verifique novamente da próxima vez |
| 303 | See Other | Redirecionamento após POST: sempre use GET |
| 304 | Not Modified | Não é bem um redirecionamento: use sua cópia em cache |
| 307 | Temporary Redirect | Como 302, mas preserva o método HTTP |
| 308 | Permanent Redirect | Como 301, mas preserva o método HTTP |
Vamos cobrir cada um em detalhes ao longo deste curso.
Por que os redirecionamentos importam
Redirecionamentos estão em toda parte no desenvolvimento web. Aqui estão os casos de uso mais comuns:
Mover conteúdo: Quando você reestrutura um site, URLs antigas precisam apontar para as novas. Sem redirecionamentos, usuários e motores de busca chegariam em becos sem saída.
Forçar HTTPS: A maioria dos sites redireciona requisições http:// para https:// automaticamente. Isso é um redirecionamento.
Após envio de formulários: Quando um usuário envia um formulário (POST), você o redireciona para uma página de confirmação (GET). Isso previne envios duplicados se ele atualizar a página.
Fluxos de autenticação: Após fazer login, usuários são redirecionados para o dashboard. Após fazer logout, são redirecionados para a página inicial.
Mudança de domínio: Quando uma empresa faz rebranding, dominio-antigo.com redireciona para novo-dominio.com.
Cadeias e loops de redirecionamento
Dois problemas podem surgir com redirecionamentos:
Cadeias de redirecionamento acontecem quando um redirecionamento leva a outro, que leva a outro:
/pagina-a → /pagina-b → /pagina-c → /pagina-d (destino final)
Cada salto adiciona latência. Motores de busca podem parar de seguir após alguns saltos. Mantenha as cadeias o mais curtas possível: idealmente apenas um redirecionamento.
Loops de redirecionamento acontecem quando redirecionamentos formam um círculo:
/pagina-a → /pagina-b → /pagina-a → /pagina-b → ...
Navegadores detectam isso e mostram um erro como "Esta página não está funcionando: muitos redirecionamentos." Esse é um bug comum em aplicações mal configuradas.
Temporário vs. permanente
A distinção mais fundamental nos códigos 3xx é se um redirecionamento é temporário ou permanente:
| Aspecto | Temporário (302, 307) | Permanente (301, 308) |
|---|---|---|
| Significado | "Use esta outra URL por enquanto" | "Use esta outra URL para sempre" |
| Cache | Navegador verifica a URL original cada vez | Navegador lembra e pula a URL original |
| SEO | Motores de busca continuam indexando a URL original | Motores de busca transferem ranking para a nova URL |
| Caso de uso | Manutenção, testes A/B, feature flags | Reestruturação de URLs, migração de domínio |
Escolher o tipo errado pode causar problemas reais: um redirecionamento permanente quando você queria temporário pode ser muito difícil de desfazer, já que navegadores fazem cache agressivamente.
Resumo
| Conceito | Ponto Chave |
|---|---|
| Códigos 3xx | Dizem ao cliente para procurar o recurso em outro lugar |
| Header Location | Contém a URL que o cliente deve seguir |
| Fluxo de redirecionamento | Cliente faz duas requisições: uma recebe o redirecionamento, outra recebe o conteúdo |
| Temporário vs. permanente | Temporário: verifique novamente. Permanente: atualize seus registros |
| Cadeias de redirecionamento | Múltiplos saltos: mantenha-os curtos |
| Loops de redirecionamento | Redirecionamentos circulares: um bug que navegadores detectam e reportam |
| Usos comuns | Forçar HTTPS, redirecionamento pós-formulário, reestruturação de URLs, fluxos de autenticação |
Continue com a aula 2
301 Moved permanently
Apresenta o 301 Moved Permanently, o cache agressivo, a transferência de SEO e a troca de POST para GET.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.