如果在 Laravel 5.1 中找不到路由,则显示 404 页面

2022-08-30 19:01:33

我试图弄清楚如果找不到路线,则显示找不到404页面。我遵循了许多教程,但它不起作用。我有在404.blade.php\laravel\resources\views\errors

也在处理程序中.php

public function render($request, Exception $e)
{
    if ($e instanceof TokenMismatchException) {
        // redirect to form an example of how i handle mine
        return redirect($request->fullUrl())->with(
            'csrf_error',
            "Opps! Seems you couldn't submit form for a longtime. Please try again"
        );
    }

    /*if ($e instanceof CustomException) {
        return response()->view('errors.404', [], 500);
    }*/

    if ($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException)
        return response(view('error.404'), 404);

    return parent::render($request, $e);
}

如果我在浏览器中输入了错误的URL,它将返回一个空白页。我有

'debug' => env('APP_DEBUG', true),

在应用程序中.php。

如果找不到路线,任何人都可以帮助我如何显示404页面?谢谢。


答案 1

我收到了 500 个错误,而不是 404 个错误。我像这样解决了这个问题:

在应用程序/异常/处理程序.php文件中,有一个渲染函数。

将函数替换为以下函数:

public function render($request, Exception $e)
{
    if ($this->isHttpException($e)) {
        switch ($e->getStatusCode()) {

            // not authorized
            case '403':
                return \Response::view('errors.403',array(),403);
                break;

            // not found
            case '404':
                return \Response::view('errors.404',array(),404);
                break;

            // internal error
            case '500':
                return \Response::view('errors.500',array(),500);
                break;

            default:
                return $this->renderHttpException($e);
                break;
        }
    } else {
        return parent::render($request, $e);
    }
}

然后,可以使用保存在视图/错误/404.blade.php等中的视图。


答案 2

enter image description here> abort 方法将立即引发异常,该异常将由异常处理程序呈现。(可选)您可以提供响应文本:

abort(403, 'Unauthorized action.');

您的app_debug是否定为真?如果是这种情况,Laravel将抛出带有回溯跟踪的错误以进行调试,如果将值更改为false,Laravel将在错误文件夹中显示默认的404页面。话虽如此,您可以随时选择使用中止。在控制器级别或路线级别,这完全取决于您。

Route::get('/page/not/found',function($closure){
  // second parameter is optional. 
  abort(404,'Page not found');
  abort(403); 
});

推荐