web-dev-qa-db-fra.com

Rediriger vers la page d'accueil si la route n'existe pas dans Laravel 5

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

J'ai ce code dans mon fichier routes.php. Je me demande comment rediriger la page d'accueil en cas d'erreur 404. Est-ce possible?

15
jesders88

Pour cela, vous devez ajouter quelques lignes de code à la méthode de rendu dans le fichier app/Exceptions/Handler.php qui ressemble à ceci:

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);
        }
    }
57
William Langlois

Je veux juste ajouter une suggestion pour le nettoyer un peu plus. Je voudrais créditer la réponse acceptée pour me faire commencer. À mon avis cependant, étant donné que chaque action dans cette fonction va renvoyer quelque chose, l’instruction switch et l’autre instruction créent un peu de folie. Donc, pour le nettoyer juste un peu, je ferais ce qui suit.

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);
}
2
MMMTroy

vous pouvez juste faire ceci:

ouvrir: app\Exceptions\Handler.php 

dans handler.php, vous pouvez remplacer ce code: 

return parent::render($request, $exception);

par ceci: return redirect('/');

cela fonctionne beaucoup par exemple:

public function render($request, Exception $exception)
{
     return redirect('/');
    //return parent::render($request, $exception);
}
0
Laravel dev