laravel5.2 存取一個不存在的路由時,如何跳到404,LNMP環境,要怎麼設定?
laravel5.2 存取一個不存在的路由時,如何跳到404,LNMP環境,要怎麼設定?
理論上你把 debug
關了,線上環境是會自動到 404
的。
你是想要「跳到 404 頁」還是「顯示 404 頁」?如果是要跳轉的話,請設定 app/Exceptions/handler.php,並在 NotFoundException 被拋出時傳回 Redirect 回應。
在laravel專案根目錄下的app
下的Exceptions
目錄下的Handler.php
文件;我們可以在這裡自訂異常
以及處理異常
;
最常見的莫過於
ModelNotFoundException
下面是一個Demo:
<code class="php">vikin.cc/article/8</code>
<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>
透過上述案例,你可以輕鬆的處理異常,並給使用者一個友善的提示!