Перенаправление на главную страницу, если маршрут не существует в Laravel 5
/** Redirect 404's to home
*****************************************/
App::missing(function($exception)
{
// return Response::view('errors.missing', array(), 404);
return Redirect::to('/');
});
У меня есть этот код в моих маршрутах.PHP-файл. Мне интересно, как перенаправить обратно на главную страницу, если есть ошибка 404. Возможно ли это?
2 ответов
для этого вам нужно добавить несколько строк кода для рендеринга метода в app/Exceptions/Handler.php-файл, который выглядит так:
public function render($request, Exception $e)
{
if($this->isHttpException($e))
{
switch ($e->getStatusCode())
{
// not found
case 404:
return redirect()->guest('home');
break;
// internal error
case '500':
return redirect()->guest('home');
break;
default:
return $this->renderHttpException($e);
break;
}
}
else
{
return parent::render($request, $e);
}
}
Я просто хочу добавить предложение для очистки его немного больше. Я хотел бы отдать должное принятому ответу за то, что он помог мне начать. На мой взгляд, однако, поскольку каждое действие в этой функции будет возвращать что-то, оператор switch и else создает немного раздувания. Поэтому, чтобы очистить его немного, я бы сделал следующее.
public function render($request, Exception $e)
{
if ($this->isHttpException($e))
{
if ($e->getStatusCode() == 404)
return redirect()->guest('home');
if ($e->getStatusCode() == 500)
return redirect()->guest('home');
}
return parent::render($request, $e);
}