我有一条路线:
((?<directory>\w+)/?)?((?<controller>\w+)/?)?((?<action>\w+)/?)?((?<id>\d+))?
它工作正常,但它导致我的系统必须为子路由的所有路由包含默认控制器(索引)。例如,如果我的页面 URI 是/blog/post
(其中 blog 是目录,而 post 是操作),我的实际 URI 必须是blog/index/post
- 我希望能够退回到仅使用blog/post
。
所以,我希望它被路由到:
directory = blog
controller = index
action = post
显然,当第二个参数实际上是控制器时,这会导致问题。例如directory/controller/action
会被错误地路由。
有没有路由方法检测三个字参数,后面可能跟一个数字参数,可以做我需要的吗?
澄清:
param/param/param(?/id)
将会:directory/controller/action(/id)
param/param(?/id)
将会:directory/default_controller/action(/id)