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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查路由“URL”是否存在?相关的知识,希望对你有一定的参考价值。

在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?
});

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

答案

简单地把你的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);
});
另一答案

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

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

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

另一答案

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

以上是关于如何检查路由“URL”是否存在?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查或验证 URL 是不是存在 - 返回 CORS 错误?

检查 URL 文件是不是存在

如何在不下载的情况下使用其 URL 检查文件是不是存在?

如何通过套接字检查特定网络中的IP是否存在?

如何通过 PHP 检查 URL 是不是存在?

如何在Angular2 rc3路由中处理来自oauth重定向url的哈希片段