2

我需要在我的 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/*-> /*)做同样的事情?

4

1 回答 1

3

/foo我的想法是在, like之后添加一个参数,/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,请使用 keyroute而不是path和控制器FrameworkBundle:Redirect:redirect而不是urlRedirect在 thedefaults中,redirect_routing_sample并使用带有参数的路由{subroutes}

于 2013-05-07T07:17:16.180 回答