php - PHP - 在Laravel中,如何实现数组类型路由?

我正在尝试在Laravel 5.8中实现一个数组类型路由,
以下是我尝试的内容:


Route::get('/','/myroute', 'MyController@index');


Route::get(['/','/myroute'], 'MyController@index');


Route::get([('/','/myroute')], 'MyController@index');


Route::get('/' || '/myroute', 'MyController@index'); 



基本上,我想要做的是创建一个具有"OR "条件的路由。
假设我想访问MyController index using mydomain,dev/>or mydomain,dev/myroute >,but Iam getting a404 not Found,

我试图阅读Laravel文档,但是我找不到方向,去实现我想要做的东西。

时间:

下面是你要实现的例子。


Route::get('/{param?}', 'MyController@index')


 ->where('param', '(myroute|myroute2)');



通过以上route,你可以为同一控制器功能创建以下网址,


www.site.com/


www.site.com/myroute


www.site.com/myroute2



试试这个,我觉得这可以帮你。


Route::get('/{myroute?}', function () {


 echo 'test';


})


 ->where('myroute', '(myroute|mysecondroute)');



这是一个例子。在路径中定义一个变量,该变量可以获取where clase中的值,

这意味着端点


api/myroute 


api/


api/mysecondroute



你不能将数组指定为路由(也就是说。方法中的第一个参数),它应该是字符串,如果你需要2路由去同一个控制器,为它定义2条不同的路由。


Route::get('/route', 'Controller@method');


Route::get('/another-route', 'Controller@method');



如果定义重定向到其他URI的路由,则可以使用Route::redirect方法:


Route::redirect('/here', '/there');



Laravel Router没有提供功能,但是因为它是macroable,你可以添加一个简单的宏来解决这个问题,我提供以下例子。

RouteServiceProvider或任何serviceprovider中,注册宏:


Route::macro('gets', function(array $urls, $action) {


 foreach($urls as $url) {


 return Route::get($url, $action);


 }


}



现在,在你的routes.php中使用它


Route::gets(['/', '/myroute'], 'MyController@index')



...