Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.0 custom 404不使用中间件_Laravel_Http Status Code 404_Middleware - Fatal编程技术网

Laravel 5.0 custom 404不使用中间件

Laravel 5.0 custom 404不使用中间件,laravel,http-status-code-404,middleware,Laravel,Http Status Code 404,Middleware,我正在使用一个中间件来解析模板的输出。这对所有页面都适用 但是,当我想显示404(有一个自定义页面)时,它不会将其视为http请求(我就是这么认为的),因为它不会通过中间件 我的问题是,如何让所有请求通过中间件。错误页面不通过routes.php 在Kernel.php中,将中间件从$routeMiddleware数组移动到$middleware数组 此阵列中的中间件将在每个请求上运行(在5.1中测试) 在Laravel 5.4和一些旧版本中,您可以修改文件app/exceptions/Hand

我正在使用一个中间件来解析模板的输出。这对所有页面都适用

但是,当我想显示404(有一个自定义页面)时,它不会将其视为http请求(我就是这么认为的),因为它不会通过中间件


我的问题是,如何让所有请求通过中间件。

错误页面不通过routes.php

Kernel.php
中,将中间件从
$routeMiddleware
数组移动到
$middleware
数组

此阵列中的中间件将在每个请求上运行(在5.1中测试)


在Laravel 5.4和一些旧版本中,您可以修改文件
app/exceptions/Handler.php
和函数
render
,如下所示:

if( is_a( $exception, \Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class ) ) {
    return redirect()->route( 'error_404' );
}

// ... old code in the function ...
通过这种方式,每404个错误都会被重定向到某个真实的路由,该路由与站点的其他路由类似


您也可以提交当前请求中的任何数据,以显示目标的合理错误。

对于像我这样因为这种奇怪行为而在2020年花费数小时的人

现在在拉维尔有一种新的仪器«»

将此添加到
/routes/web.php

Route::fallback(function () {
    return view("404"); // template should exists
});

之后,所有请求都将通过中间件进行处理。

如果您指定如何显示自定义404页面,这将有助于人们回答。laravel 5有一个“错误”文件夹,我在其中添加了一个404.blade.php。哪个中间件没有使用?你是说终止中间件吗?问题是404、500等是由于抛出异常而显示的-因此系统正在处理错误响应-没有进行正常的输出。您对输出的“解析”是什么?它只是一个404-无论如何,在这个页面中不应该有太多的逻辑…这个方法不能总是使用,因为一些中间件需要特定于web路由的数据,而这些数据在当时还不可用。