Repita a mesma requisição em uma nova URL permanente.
Quando usar
Como o 301, mas o método e o corpo não podem mudar.
Bom saber
O 308 é a versão permanente do 307: os mecanismos de busca o tratam como 301 e transferem os sinais de ranqueamento, mas o método e o corpo não podem mudar. Use-o para endpoints de API que recebem POST, PUT ou PATCH e mudaram de vez. Os navegadores o armazenam em cache como o 301, então vale a mesma cautela: um 308 errado pode ficar preso nos navegadores dos usuários por muito tempo.
O Next.js responde com 308 para redirecionamentos marcados como permanentes e para a normalização da barra final, o que surpreende quem lê os logs. Clientes muito antigos, como o Internet Explorer 11 no Windows 7, não entendem o 308; se você ainda os atende, use 301 para páginas GET simples. Como o 301, um 308 é cacheável por padrão, então adicione Cache-Control: max-age enquanto ainda estiver testando um novo redirecionamento.
Redirecionamento (3xx)
Os códigos 3xx são redirecionamentos: o cliente precisa ir para outro lugar, ou usar a cópia em cache, para concluir a requisição.
Como fica
HTTP/1.1 308 Permanent RedirectComo enviar
| Node.js / Express | res.redirect(308, '/new-url') |
|---|---|
| Python / Flask | return redirect('/new-url', code=308) |
| nginx | return 308 https://example.com$request_uri; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/