Php 单路由中的多个路由::get()调用Laravel 4

Php 单路由中的多个路由::get()调用Laravel 4,php,laravel,laravel-4,Php,Laravel,Laravel 4,在Laravel 4中定义路由时,是否可以在同一路由中定义多个URI路径 目前,我做了以下工作: Route::get('/', 'DashboardController@index'); Route::get('/dashboard', array('as' => 'dashboard', 'uses' => 'v1\DashboardController@index')); 但这违背了我的目的,我想做一些类似的事情 Route::get('/, /dashboard', arr

在Laravel 4中定义路由时,是否可以在同一路由中定义多个URI路径

目前,我做了以下工作:

Route::get('/', 'DashboardController@index');
Route::get('/dashboard', array('as' => 'dashboard', 'uses' => 'v1\DashboardController@index'));
但这违背了我的目的,我想做一些类似的事情

Route::get('/, /dashboard', array('as' => 'dashboard', 'uses' => 'DashboardController@index'));

如果我正确理解你的问题,我会说:

使用路由前缀

(可选)路线参数

例如:

Route::group(array('prefix' => '/'), function() { Route::get('dashboard', 'DashboardController@index'); });


我认为您需要将可选参数与正则表达式一起使用:

Route::get('/{name}', array(
     'as' => 'dashboard', 
     'uses' => 'DashboardController@index')
    )->where('name', '(dashboard)?');
*假设您想要路由到同一个控制器,但问题并不完全清楚


*当前被接受的答案不仅与
/
/dashboard

匹配。出于好奇,我发现尝试将此作为注释的答案来发布有效的解决方案非常有趣:

Route::get('/{name}', [
    'as' => 'dashboard', 
    'uses' => 'DashboardController@index'
  ]
)->where('name', 'home|dashboard|'); //add as many as possible separated by |
因为
where()
的第二个参数需要正则表达式,所以我们可以指定它与
|
分隔的任何参数完全匹配,所以我最初的想法是提出一个
,其中()
到Laravel路由,这个解决方案解决了这个问题

PS:此示例在Laravel 5.4.30上进行了测试


希望有人觉得它有用

就个人而言,我更愿意将
/
重定向到
/dashboard
(或反之亦然)为了SEO和简单起见,为什么有两个显示完全相同内容的URL?@Alexandre Danault在某些情况下,您希望(稍微)根据路线改变视图的内容,但同时,使用单个控制器处理请求(即,不要在3种不同的控制器方法中重复整个逻辑)。第二个示例将匹配任何uri,例如
/foo
。此答案是错误的。非常感谢。在我的例子中,其中一条路由传递一个空参数,将我发送到另一条具有相同前缀的路由。我已经开始检查第二条路线,如果参数是我想要的初始路线的后缀,并重定向。。。但是可选的论点救了我,现在执行进入了正确的路径……2年后,这个问题仍然相关。但是,是否可以使用两条以上的路线处理该案件?例如:与“/”、“/dashboard”和“/home”相同的控制器?我们能否进一步将可选参数限制为“主”和“仪表板”?@Alex问题是相关的。到目前为止有什么解决办法吗?
Route::get('/{name}', [
    'as' => 'dashboard', 
    'uses' => 'DashboardController@index'
  ]
)->where('name', 'home|dashboard|'); //add as many as possible separated by |