如何在Laravel中显示404页面,如果路由未找到

12

我使用中间件创建了路由组,它完美地工作。

但是我有一个问题,如果我在未登录的情况下导航到以下网址:

http://localhost/laravel-news/public/admin/add-post-new

它将重定向到访客主页,

但是如果我导航到没有URL中的管理员的以下网址:

http://localhost/laravel-news/public/add-post-new

返回空白页面。现在我的问题是如何为此显示404页面未找到。我正在使用laravel 5.1

谢谢

更新

Route::group(['middleware' => 'admin'], function () {


            Route::get('add-post-new', function () {

        //  dd('something');
            return view('a.addPost');

            });

            Route::post('/add-post-new','PostsController@addPost');

            Route::get('/all-post', function () {return view('a.all_post'); });



});

没有抛出错误?尝试在 resources/views/errors/404.blade.php 添加 404 错误页面并查看是否呈现该页面。 - Mihai Matei
@MateiMihai。没有抛出错误。我已经添加了404错误页面,但仍然无法正常工作。此外,我有一个add-post-new页面,但它应该只能由管理员访问,而不是其他用户。 - scott
1
请告诉我们路由组看起来是什么样子的(代码)。否则只能靠猜测了。 - barfoos
@martinweise。我已更新我的问题。 - scott
如何处理REST API的JSON响应?我需要发送JSON响应。 - 151291
5个回答

25

更新 2020年6月8日

/resources/views/errors/文件夹中创建一个404.blade.php页面,如果发生以下情况,则会显示该页面:

  • 路由不存在
  • 当您使用->findOrFail($modelId);
  • 当您使用abort(404);

非存在的路由时,显示自定义404页面而不是Laravel错误提示:

Sorry, the page you are looking for could not be found.
1/1 NotFoundHttpException in RouteCollection.php line 161:
  1. /resources/views/errors/ 文件夹中创建 404.blade.php 页面

然后通过调用它来使用。

  1. Create a 404.blade.php page in the /resources/views/errors/ directory.

Then simply call it for use.

abort(404);

例如创建这样的路由:

Route::get('/404', function () {
    abort(404);
});

如何处理 Rest API 的这个问题?我需要发送 JSON 响应。 - 151291
@151291 return response()->json(['message' => 'error', 'code' => 404])->setStatusCode(404); - lewis4u
1
小修正:您不需要使用 return abort(404);,因为 abort 函数不会返回任何内容。只需删除 return 并测试即可。 - Binar Web

7

1
@Grald,谢谢。我之前遇到了这个错误,是因为 Laravel 项目的问题。在我的新副本中,它可以正常工作。 - scott
1
适用于 Laravel 9.x 版本,谢谢。 - Kamlesh

2

您可以使用这个方法设置一个404路由,然后在该路由中使用任何视图文件。

App::error(function(Exception $exception, $code)
{
Log::error($exception);

if (Config::get('app.debug') == false) {
    return Redirect::route('404');
}
});

获取错误信息:Class "App\Helpers\Redirect" not found - Kamlesh

0

0
try{
    return view($SomeInvalidView);
}  catch (Exception $e){
    abort(404);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接