首页 >社区问答列表 >php - laravel 访问不存在的路由跳转问题!

php - laravel 访问不存在的路由跳转问题!

laravel5.2 访问一个不存在的路由时,如何跳转到404,LNMP环境,要怎么配置?

  • PHPzhong
  • PHPzhong    2017-04-10 17:29:592楼

    你是想要「跳转到 404 页」还是「显示 404 页」?如果是要跳转的话,请配置 app/Exceptions/handler.php,并在 NotFoundException 被抛出时返回一个 Redirect 响应。

    +0添加回复

  • 回复
  • 阿神
  • 阿神    2017-04-10 17:29:591楼

    1、如果你只是想抛出404错误,debug开关可以满足你;


    2、如果你想处理异常或自定义异常,可参照如下;

    在laravel项目根目录下的app下的Exceptions目录下的Handler.php文件;我们可以在这里自定义异常以及处理异常

    最常见的莫过于ModelNotFoundException

    下面是一个Demo:

    route:

    vikin.cc/article/8

    Handler file:

    
    //处理Http响应异常
    public function render($request, Exception $e)
    {
        switch($e){
            
            //使用类型运算符 instanceof 判断异常(实例)是否为 ModelNotFoundException
            case ($e instanceof ModelNotFoundException):
    
                //进行异常处理
                return $this->renderException($e);
                break;
    
            default:
    
                return parent::render($request, $e);
    
        }
    }
    
    //处理异常
    protected function renderException($e)
    {
    
       switch ($e){
    
           case ($e instanceof ModelNotFoundException):
               
               //自定义处理异常,此处我们返回一个404页面
               return view('errors.404');
               break;
    
           default:
           
               //如果异常非ModelNotFoundException,我们返回laravel默认的错误页面
               return (new SymfonyDisplayer(config('app.debug')))
                      ->createResponse($e);
    
       }
    
    }

    通过上述案例,你可以轻松的处理异常,并给用户一个友好的提示!

    +0添加回复

  • 回复