Подтвердить что ты не робот

Перенаправление на главную страницу, если маршрут не существует в Laravel 5

/** Redirect 404 to home
*****************************************/
App::missing(function($exception)
{
    // return Response::view('errors.missing', array(), 404);
    return Redirect::to('/');
}); 

У меня есть этот код в файле routes.php. Мне интересно, как перенаправить обратно на домашнюю страницу, если есть ошибка 404. Возможно ли это?

4b9b3361

Ответ 1

Для этого вам нужно добавить несколько строк кода для отображения метода в файле 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);
        }
    }

Ответ 2

Я просто хочу добавить предложение для его очистки немного больше. Я хотел бы поблагодарить принятый ответ за то, что начал меня. На мой взгляд, однако, поскольку каждое действие в этой функции вернет что-то, оператор 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);
}