A diferença entre os redirecionamentos 301 e 302

Aborda a mudança permanente versus a temporária, além de 308 e 307, que preservam o método.

301 Moved Permanently significa que o recurso foi movido permanentemente para uma nova URL. Os mecanismos de busca captam esse sinal e transferem a posição e o valor dos links da URL antiga para a nova. Use-o para mudanças que você não vai desfazer, como uma migração de domínio ou a troca de HTTP para HTTPS.

302 Found é uma mudança temporária. A URL original continua válida, então os mecanismos de busca não transferem a posição. É adequado para situações que logo voltarão ao normal, como um desvio temporário para uma página de manutenção ou um redirecionamento após o login.

Um ponto de atenção é a preservação do método. Historicamente, os navegadores às vezes trocavam POST por GET com 301 e 302. Se você precisa manter o método, use 308 para uma mudança permanente e 307 para uma temporária, e use 303 See Other ao enviar o usuário para uma página de resultado após um POST.