2013-07-31 41 views
11

我正在使用Laravel4框架,並且遇到了此問題。Laravel:如何根據路由自定義404錯誤進行響應

我想根據請求的url顯示自定義404錯誤。

例如:

Route::get('site/{something}', function($something){ 
    return View::make('site/error/404'); 
}); 

Route::get('admin/{something}', function($something){ 
    return View::make('admin/error/404'); 
}); 

'$something'的值是不重要的。

顯示的示例僅適用於一個段,即'site/foo''admin/foo'。 如果有人要求'site/foo/bar''admin/foo/bar' laravel會拋出默認的404錯誤。

App::missing(function($exception){ 
    return '404: Page Not Found'; 
}); 

我試圖在Laravel4文檔中找到一些東西,但沒有什麼是適合我的。 請幫忙:)

謝謝!

回答

28

app/start/global.php

App::missing(function($exception) 
{ 
    if (Request::is('admin/*')) 
    { 
     return Response::view('admin.missing',array(),404); 
    } 
    else if (Request::is('site/*')) 
    { 
     return Response::view('site.missing',array(),404); 
    } 
    else 
    { 
     return Response::view('default.missing',array(),404); 
    } 
}); 

在你看來,你可以找到$something{{ Request::path(); }}{{ Request::segment(); }}

+0

有在這一個很好的討論:http://blog.danharper.me/blog/2013/ 01/01/exceptions-in-laravel-4/ – ptim

+1

任何人都有這個更新版本的Laravel 5.5 ...? – Inigo