2013-05-03 76 views
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/* - >/*)?

回答

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這可能不是你想要的行爲。如果你想保持subroute本身,只得到一開始擺脫/foo的,使用鑰匙route而不是path和控制器FrameworkBundle:Redirect:redirect,而不是urlRedirectredirect_routing_sampledefaults和使用路由與參數{subroutes}