如何检查路由“URL”是否存在?

问题描述 投票:0回答:3

在Laravel 5.2中,是否有特定的方法(处理程序)来检查路由是否存在?让我们说,对于一个基本的URL,如:

http://www.example.com/laravel

然后我想从我的主页面路由器处理不存在的URL(例如:/laravel),它是:

Route::get('/{page}', funtion(){
    //check if $page is a valid route URL? Or 404?
});

我如何故意检查这条路线是否有效?

php laravel routes
3个回答
3
投票

简单地把你的Route::get('/{page}','MainController@getPage');放在最后。这样,如果它在它之前找到另一条路线将使用它,但如果它没有,那么它将被它抓住。例如:

Route::get('/welcome','WelcomeController@getWelcome');
Route::get('/test','TestController@getTest');
Route::get('/{page}','MainController@getPage');

如果您要击中/welcome/test,它应该将它们路由到正确的控制器。如果你在哪里击中/hello它应该去MainController并点击功能getPage($page)$page是你击中的页面。

如果它击中MainController@getPage,你知道它基本上是404。

如果您在出于某种原因之前需要了解路线,可以创建如下内容:

Route::get('/checkurl/{page}',function($page) {
    $exists = Route::has('/' . $page);
    return (new Response(json_encode(['exists'=>$exists]),200);
});

3
投票

我使用以下作为我的最后路线:

Route::any('{catchall}', function($page) {
    abort(404);
} )->where('catchall', '(.*)');

如果您还不知道,abort(404)将从404.blade.php返回视图resources/views/errors


0
投票

使用laravel 5.5.1+添加带有任何捕获的最后路由不再有效

© www.soinside.com 2019 - 2024. All rights reserved.