Редиректы (RedirectResponse)

Редирект - это перенаправления пользователя с одной страницы на другую. Они реализуются через объект Imhotep\Http\RedirectResponse, который формирует корректные HTTP-заголовки для перехода. Для быстрого создания ответа используйте хелпер redirect():

// Временный редирект (302)
return redirect('/new-page');

// Постоянный редирект (301)  
return redirect()->to('/new-page', 301);
PHP

Редирект на именованные маршруты

Для перенаправления на именованный маршрут, вызовете хелпер redirect()->route():

Route::get('/login')->name('login')

return redirect()->route('login');
PHP

Если маршрут имеет параметры, передайте их вторым аргументом:

Route::get('/profile/{id}')->name('profile')

return redirect()->route('profile', ['id' => 1]);
// Перенаправит на: /profile/1
PHP

Редирект к действиям контроллера

Для перенаправления на действие контроллера, вызовете хелпер redirect()->action():

use App\Http\Controllers\PageController;

return redirect()->action([PageController::class, 'index']);
PHP

Если маршрут имеет параметры, передайте их вторым аргументом:

use App\Http\Controllers\PageController;

return redirect()->action([PageController::class, 'show'], ['id' => 1]);
PHP

Редирект на внешние домены

Для перенаправления пользователя на домен за пределами вашего приложения, воспользуйтесь методом redirect()->away():

return redirect()->away('https://example.com');
PHP

Редирект на предыдущую страницу

Удобно возвращать пользователя туда, откуда он пришёл:

return redirect()->back();
PHP

Редирект с данными

При обработке форм часто нужно не просто перенаправить пользователя, но и передать сообщение о результате операции. Для этого используется метод with() или withInput() - они сохраняют данные в сессию пользователя однократно (flash-данные).

Route::post('/user/profile', function () {
    // Обновление профиля

    return redirect('/profile')->withInput()->with('error', 'Email already taken.');
});
PHP

Во view данные доступны глобально через функцию session():

<input type="email" name="email" value="{{ old('email') }}" />

@if (session('error'))
    <div class="alert alert-error">
        {{ session('error') }}
    </div>
@endif
PHP

Flash-данные существуют только до следующего запроса — при обновлении страницы сообщение исчезнет.