如何避免在Laravel中覆盖路由?

时间:2020-02-06 14:00:40

标签: laravel routes laravel-6

对不起,我知道之前已经有人问过,但是我没有找到解决方法。

我是Laravel的新手,仍然在学习并坚持着这个问题:

我的目标是在admin中添加页面,并在前端显示这些页面。

对于网站的前部,我有以下路线:

Route::get('/{page}', 'PagesController@show');
  • 所以当您访问/ about,/ contact,/ another-page时,我使用的视图相同

对于网站的“管理员”部分,我有以下路线:

Route::get('/admin', 'AdminController@show');

我的问题是第一条路线覆盖了第二条路线,我不知道如何避免这种情况。

我尝试使用namespaces and grouping routes,但得到的结果相同。

谢谢

1 个答案:

答案 0 :(得分:1)

为简单起见,这是因为您在admin路由之前有带有参数的路由,因此将发送“ admin作为页面的参数”

简单的解决方法是将管理路由放在您的“ / {page}之前,这样它将首先找到管理路由,类似这样:

Route::get('/admin', 'AdminController@show');
Route::get('/{page}', 'PagesController@show');

但是我不建议您以此方式构建您的路由,并在可能的情况下设置详细信息页面,这种构建路由的方式会与找不到的404路由混为一谈。