search

Home  >  Q&A  >  body text

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

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

PHPzPHPz2871 days ago608

reply all(3)I'll reply

  • 伊谢尔伦

    伊谢尔伦2017-04-10 17:29:59

    理论上你把 debug 关了,线上环境是会自动到 404 的。

    reply
    0
  • PHPz

    PHPz2017-04-10 17:29:59

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

    reply
    0
  • 阿神

    阿神2017-04-10 17:29:59

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


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

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

    最常见的莫过于ModelNotFoundException

    下面是一个Demo:

    route:

    1

    <code class="php">vikin.cc/article/8</code>

    Handler file:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    <code class="PHP">

    //处理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);

     

       }

     

    }</code>

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

    reply
    0
  • Cancelreply