Как выполнить перенаправление (редирект) в веб-приложении?

«Как выполнить перенаправление (редирект) в веб-приложении?» — вопрос из категории Сети, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Перенаправление (HTTP redirect) — это стандартный механизм, при котором сервер сообщает клиенту (браузеру) о необходимости запросить другой URL. Реализация зависит от бэкенд-технологии.

Примеры на разных технологиях:

1. PHP (чистый): Функция header() отправляет специальный HTTP-заголовок Location. Критически важно отправить его до любого вывода в тело ответа.

// Простой редирект с кодом 302 (Found - временный)
header('Location: /new-page.php');
exit; // Прекращаем выполнение скрипта

// Постоянный редирект (301 Moved Permanently)
header('Location: /new-location', true, 301);
exit;

2. Laravel (PHP-фреймворк): Используется хелпер redirect() или фасад Redirect.

return redirect('/home');
return redirect()->route('profile', ['id' => 1]); // На именованный маршрут
return redirect()->away('https://external-site.com'); // Внешний URL
// С данными сессии (flash)
return redirect('dashboard')->with('status', 'Profile updated!');

3. Node.js (Express):

res.redirect('/foo/bar');
res.redirect('http://example.com');
res.redirect(301, '/permanent-page');

4. В клиентском JavaScript:

// Изменение location
window.location.href = 'https://example.com';
// Имитация клика по ссылке (сохраняет историю)
window.location.assign('/new-page');
// Замена текущей записи в истории
window.location.replace('/new-page');

Важные HTTP-коды состояния для редиректов:

  • 301 Moved Permanently: Ресурс навсегда перемещен. Поисковые системы обновляют индекс.
  • 302 Found (или 307 Temporary Redirect): Редирект временный. Оригинальный URL остается актуальным.
  • 308 Permanent Redirect: Как 301, но гарантирует, что метод запроса (POST/PUT) не изменится.

При разработке важно правильно выбирать тип редиректа для SEO и корректной работы приложения.