我需要在Sf2项目中更改路由系统的基础。
我使用FrameworkBundle:Redirect:urlRedirect
永久重定向几条路线,如下所示:
# File : app/config/routing.yml
# ..
redirect_route_example:
pattern: /foo
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /
permanent: true
# ..
如果我的“主路线”/foo
有很多子路由
(例如/foo/page1
,/foo/page2
,/foo/page1/subpage1
等。
是否可以使用FrameworkBundle:Redirect:urlRedirect
但使用正则表达式路线(例如/foo/*
- > /*
)做同样的事情?
答案 0 :(得分:3)
我的想法只是在/foo
之后添加一个参数,如/foo{subroutes}
,并允许在此参数中使用斜杠。所以我们基本上需要这个:
http://symfony.com/doc/master/cookbook/routing/slash_in_parameter.html
解决方案可能看起来像这样:
# File : app/config/routing.yml
# ..
redirect_route_example:
path: /foo{subroutes}
requirements:
subroutes: ".*"
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /
permanent: true
# ..
修改强>
请注意,此解决方案会将所有内容重定向到以/
开头的/foo
,这可能不是您想要的行为。如果您想保留子路由本身并且仅在开始时删除/foo
,请使用密钥route
而不是path
和控制器FrameworkBundle:Redirect:redirect
而不是{{ 1 {}在urlRedirect
的{{1}}中,并使用参数defaults
的路线。