Php “拉雷维尔”;根“;路由变量

Php “拉雷维尔”;根“;路由变量,php,laravel,Php,Laravel,我在拉维尔有以下路线。我想能够调用这两个国家以及网页上的“根”域,而不是任何目录前缀 我想实现的是,当在雄辩的模型中找不到任何页面时,它会尝试打开国家,如果失败,则显示404 这可能吗?我需要改变什么 Route::get('/{page}', 'PageController@view')->name('pages.view'); Route::get('/{country}', 'CountryController@view')->name('countries.view');

我在拉维尔有以下路线。我想能够调用这两个国家以及网页上的“根”域,而不是任何目录前缀

我想实现的是,当在雄辩的模型中找不到任何页面时,它会尝试打开国家,如果失败,则显示404

这可能吗?我需要改变什么

Route::get('/{page}', 'PageController@view')->name('pages.view');
Route::get('/{country}', 'CountryController@view')->name('countries.view');
编辑:我想我有点不清楚。
问题是,
国家/地区.view
路线从未到达,因为它以前在
页面.view中失败过。假设我调用
/germany
-它首先匹配
页面。查看
路线,但不存在
德国
页面。它立即抛出404,但我希望它在那之后检查国家,并且只有在/德国作为一个国家不存在的情况下才会失败。

有几种方法我将提到两种方法:

1-路由模型绑定: 内部页面控制器创建函数

  public function view(Page $page){
   }
如果页面不存在,此函数将返回not found

2-正常检查:

   public function view($page){
    $check= Page::find($page);
     if(!$check) abort(404);
   }

创建resources/views/errors/404.blade.php文件夹并定义404错误消息

不可知如何? 一个路由,测试参数,然后返回正确的结果

Route::get('/{pageOrCountry}',function($pageOrCountry){
$page = App\Page::find($pageOrCountry);
if($page) return $page;
else $country = App\Country::find($pageOrCountry);
if($country) return $country;
else return redirect('404');
});

对不起,我想我不太清楚我想要什么。问题是,“countries.view”路线永远无法到达,因为它以前使用“pages.view”失败过。假设我调用/germany-它首先匹配“pages.view”路径,但不存在“germany”页面。它立即抛出404,但我希望它在那之后检查国家,只有当/德国不作为一个国家存在时才会失败。我认为你目前定义的路线非常模糊。Laravel无法区分/{page}和/{country}请求。我认为在控制器中使用一个方法是可行的,您可以在其中解析传递的参数,决定如何处理它,然后重定向到适当的视图