如何检查路由“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”是否存在?的主要内容,如果未能解决你的问题,请参考以下文章