基于路线

时间:2015-10-12 08:55:25

标签: php laravel http-status-code-404 laravel-5.1

我是laravel的新手。我想根据请求的网址显示自定义404错误。

例:
site.com/somepage

site.com/admin/somepage

我看到了this的回答,但它适用于laravel 4.我找不到Laravel 5.1的等效答案

请帮忙。谢谢!

- ANSWER -

我的代码基于Abdul Basit

的建议
//Handle Route Not Found
if ($e instanceof NotFoundHttpException) {
    //Ajax Requests
    if ($request->ajax() || $request->wantsJson()) {
        $data = [
            'error' => true,
            'message' => 'The route is not defined',
        ];
        return Response::json($data, '404');
    } else {
        //Return view
        if (Request::is('admin/*')) {
            return Response::view('admin.errors.404', array(), 404);
        } else {
            return Response::view('errors.404', array(), 404);
        }
    }
}

//Handle HTTP Method Not Allowed
if ($e instanceof MethodNotAllowedHttpException) {
    //Ajax Requests
    if ($request->ajax() || $request->wantsJson()) {
        $data = [
            'error' => true,
            'message' => 'The http method not allowed',
        ];
        return Response::json($data, '404');
    } else {
        //Return view
        if (Request::is('admin/*')) {
            return Response::view('admin.errors.404', array(), 404);
        } else {
            return Response::view('errors.404', array(), 404);
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您可以在renderApp\Exceptions\Handler的{​​{1}}方法中为此做逻辑

app\Exceptions\Handler.php

答案 1 :(得分:0)

Laravel可以轻松显示各种HTTP状态代码的自定义错误页面。例如,如果要自定义404 HTTP状态代码的错误页面,请创建resources / views / errors / 404.blade.php。此文件将在您的应用程序生成的所有404错误中提供。应该命名此目录中的视图以匹配它们对应的HTTP状态代码。

答案 2 :(得分:0)

检查回退路由,您可以定义一个在没有其他路由与传入请求匹配时将执行的路由。回退路由应始终是应用程序注册的最后一条路由。 https://laravel.com/docs/5.8/routing#fallback-routes

Route::fallback(function () {
    //Send to 404 or whatever here.
});