在Laravel 5.5.x中捕获任何未注册路由的正确方法是什么

时间:2017-12-11 02:09:32

标签: laravel laravel-5

我看到laravel有Routes::any()方法,我很好奇如何创建一条路线"捕手"这将捕获任何未注册的路线并返回404页面,我知道它会像Route:any('/', function() { abort(404) });那样接受我认为它不会/因为我已注册为主页。

我看到的所有例子都是2年,并且在5.5发布时已过时。

2 个答案:

答案 0 :(得分:1)

如果您只想自定义404页面的视图,那么就不需要" catch"任何东西。 resources/views/errors/404.blade.php中的You can just modify the 404 error page

如果您想在404发生时执行某些操作,则可以使用render方法在exception handler中执行此操作。

您还可以使用middleware来处理404:

class ExampleMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        if($response->getStatusCode() == 404) {
            // Handle 404
        }
    }
}

根据您的使用情况,terminable middleware可能更合适。

答案 1 :(得分:1)

  • 在Laravel 5.5中有后备网址,当找不到路由时会调用它。

    路线::任何(" {后备}",函数(){

    dd('这是后备功能。');

    });

  • 或者您可以尝试使用旧版本,如5.4,5.3等

    路线::任何(" {所有}",函数(){

    dd('This is fallback function');
    

    });