繁体   English   中英

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

[英]How can I check whether the route “URL” exists?

Laravel 5.2中 ,是否存在检查路由是否存在的特定方法(处理程序)? 假设,对于像这样的基本网址:

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)将从resources/views/errors返回视图404.blade.php

在laravel 5.5.1+中不再添加任何捕获的最后一条路线

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM