我正在尝试实现404页面,但到目前为止没有任何反应。我得到这个:
Not Found
The requested URL /test was not found on this server.
我有一个自定义的 404 页面,其中的文字完全不同。
在我的路线文件中,我具有以下路线:
Route::fallback(function(){
return response()->view('errors/404', [], 404);
});
在 Handler.php 中,我添加了以下内容:
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
if ($exception instanceof MethodNotAllowedHttpException)
abort(404);
if ($this->isHttpException($exception)) {
if ($exception->getStatusCode() == 404) {
return response()->view('errors.404', [], 404);
}
}
return parent::render($request, $exception);
}
404.blade.php 位于资源/视图/错误
下答案 0 :(得分:1)
404.blade.php 文件应位于资源/视图/错误下(在视图中注意“ s”)。而且您在路由和Handler.php文件中不需要自定义代码,Laravel可以自己处理404。
答案 1 :(得分:0)
错误消息
Not Found
The requested URL /test was not found on this server.
是默认服务器404错误消息,不是来自Laravel。
当您不配置自定义错误页面时,应该看到Laravel的默认错误页面。 这意味着您可能没有在服务器上正确配置重写,而Laravel没有收到请求。
上查看此信息答案 2 :(得分:0)
在handler.php导入中
use Illuminate\Session\TokenMismatchException;
并编辑render()函数以遵循
public function render($request, Exception $exception)
{
if ($exception instanceof TokenMismatchException) {
if ($request->expectsJson()) {
return response()->json([
'dismiss' => __('Session expired due to inactivity. Please reload page'),
]);
}
else{
return redirect()->back()->with(['dismiss'=>__('Session expired due to inactivity. Please try again')]);
}
}
elseif($exception->getStatusCode()!=422){
return response()->view('errors.404');
}
return parent::render($request, $exception);
}
这是在出现任何错误时将您重定向到404页面的方式。 TokenMismatchException是会话到期,状态代码422是验证错误。 $ request-> expectsJson()用于ajax json进程