301 Moved Permanently означает, что ресурс навсегда перемещён на новый URL. Поисковые системы воспринимают этот сигнал и переносят позиции и ссылочный вес со старого URL на новый. Используйте его для переносов, которые вы не будете отменять, — например, при миграции домена или переходе с HTTP на HTTPS.
302 Found — это временный перенос. Исходный URL остаётся действительным, поэтому поисковые системы не переносят позиции. Он подходит для ситуаций, которые вскоре вернутся к прежнему состоянию, — например, для временного обхода на страницу обслуживания или перенаправления после входа.
Отдельного внимания заслуживает сохранение метода. Исторически браузеры при 301 и 302 иногда меняли POST на GET. Если метод обязательно нужно сохранить, используйте 308 для постоянного переноса и 307 для временного, а при отправке пользователя на страницу результата после POST — 303 See Other.