laravel5.2 訪問一個不存在的路由時,如何跳轉到404,LNMP環境,要怎麼配置?
回複內容:
laravel5.2 訪問一個不存在的路由時,如何跳轉到404,LNMP環境,要怎麼配置?
理論上你把 debug
關了,線上環境是會自動到 404
的。
你是想要「跳轉到 404 頁」還是「顯示 404 頁」?如果是要跳轉的話,請配置 app/Exceptions/handler.php,並在 NotFoundException 被拋出時返回一個 Redirect 響應。
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); }}
通過上述案例,你可以輕鬆的處理異常,並給使用者一個友好的提示!