如果找不到路线,我试图找出未找到404页面。我遵循了很多教程,但它没有用。
我在404.blade.php
\laravel\resources\views\errors
同样在handler.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);
}
如果我在浏览器中输入错误的网址,则会返回空白页面。我有
'debug' => env('APP_DEBUG', true),
在app.php。
如果找不到路线,有人可以帮我如何显示404页面吗?谢谢。
答案 0 :(得分:21)
我收到了500个错误,而不是404个错误。我解决了这个问题:
在app / Exceptions / Handler.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);
}
}
然后,您可以使用保存在views / errors / 404.blade.php中的视图,等等。
答案 1 :(得分:5)
@ tester.Your问题已经解决,请在composer中尝试以下命令:
php artisan view:clear
然后使用未知网址再次尝试。因为我之前也遇到过同样的错误。
答案 2 :(得分:1)
我在app / Exceptions / Handler.php(Laravel 5.2)中使用以下内容:
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
if ($e instanceof \ReflectionException OR $e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException) //Si la ruta no existe, mostar view 404.
return response(view('errors.404'), 404);
return parent::render($request, $e);
}
它看起来像这样:img
答案 3 :(得分:0)
在apache中,您可以将此代码放在主目录的.htaccess文件中,并确保在httpd confg文件中将AllowOverride指令更改为all
ErrorDocument 404 the\path\to\404.blade.php
答案 4 :(得分:0)
在配置文件夹 app.php 中更改以下代码
'debug' => env('APP_DEBUG', true),
在 App->Exception->Handler.php 中用下面的代码替换渲染函数
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException)
{
return response()->view('errors.404', [], 404);
}
if ($exception instanceof \ErrorException) {
return response()->view('errors.500', [], 500);
}
else {
return parent::render($request, $exception);
}
return parent::render($request, $exception);
}