Перенаправление на главную страницу, если маршрут не существует в 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);
}