2015-04-06 9 views
12
/** Redirect 404's to home 
*****************************************/ 
App::missing(function($exception) 
{ 
    // return Response::view('errors.missing', array(), 404); 
    return Redirect::to('/'); 
}); 

Mam ten kod w moim pliku routes.php. Zastanawiam się, jak przekierować z powrotem do strony głównej, jeśli wystąpił błąd 404. czy to możliwe?Przekieruj na stronę główną, jeśli nie istnieje w Laravel 5

Odpowiedz

48

Do tego trzeba zrobić, dodać kilka linijek kodu do renderowania metodę w APP Wyjątki/pliku/Handler.php który wygląda tak:

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); 
     } 
    } 
+1

To działa! jest to właściwy sposób postępowania z przekierowaniem na stronę główną, jeśli nie istnieje w Laravel 5. –

+0

idealne rozwiązanie, dziękuję. –

+0

Idealne rozwiązanie! –

1

Chcę tylko dodać sugestię do czyszczenia trochę więcej. Chciałbym zaakceptować zaakceptowaną odpowiedź na rozpoczęcie pracy. Moim zdaniem jednak, ponieważ każda czynność w tej funkcji zwróci coś, zmiana i wypowiedź utworzą cios. Aby posprzątać to tylko odrobinę, zrobię co następuje.

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); 
} 
+0

'getStatusCode()' :) – senty

Powiązane problemy