Laravel: как отвечать пользовательской ошибкой 404 в зависимости от маршрута

Я использую Laravel4, и я столкнулся с этой проблемой.

Я хочу показать пользовательскую ошибку 404 в зависимости от запрошенного URL.

Например:

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, но для меня ничего нет. Пожалуйста, помогите:)

Спасибо!

Ответ 1

В 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(); }}