如何将所有具有相同前缀的url路由到一个操作


How to route all url with same prefix to one action

我想将所有具有相同前缀的URL路由到相同的操作,如:

http://host/pic/with/bird

http://host/pic/with/bird/with/fish

http://host/pic/with/pig/theme/sad/resolution/high

所有的Piccontroller@showPic

我试着像一样写路线

Route::get("/pic/*","Piccontroller@showPic");

要将所有以/pic/开头的url路由到相同的函数。但带有*的路线不起作用。

如果您查看Illuminate'Routing'Route,它有一个名为where()的方法。对该方法的评论说"在路由上设置正则表达式要求。"

看起来是这样的:

Route::get('/pic/{section}', 'Piccontroller@showPic')->where(['section' => '.*']);

本质上意味着它将接受/pic/部分之后的任何内容,并将其作为变量传递给showPic()方法。现在,在方法上解析它应该像在正斜杠上解析简单的explode()一样简单,假设您有某种模式或只是试图获取每个值。