Symfony2,路由自动重定向,也自动生成新路径,这是可能的


Symfony2, routing autoredirect and also auto generate new path, is it possible?

我在我的路由中成功创建了重定向,如果页面为 1,则重定向到没有 URL 参数页面的主控制器页面。(对重复内容的SEO预防)。所以我有这个路由规则:

default_blog:
    path:     /                                               
    defaults: { _controller: AcmeBlogBundle:Default:index, page: 1}
default_blog_page_first:
    path:     /page/1
    defaults:
        _controller: FrameworkBundle:Redirect:redirect
        route: default_blog
        permanent: true
default_blog_page:
    path:     /page/{page}
    defaults: { _controller: AcmeBlogBundle:Default:index}
    requirements:
        page: 'd+

它在我的分页中有效。如果我单击我的第一页 (/page/1),我将被重定向到/,但它是否有可能已经在生成路径中转换?只是,如果default_blog_page有参数page = 1它会自动转换为default_blog

所以,我的分页将如下所示:

URL => Page
-------------------
/ => 1 , /page/2 => 2

在任何树枝模板中:

path('default_blog_page', {'page': 1})

如果检测到页面 = 1,它将自动更改为:

path('default_blog')

可能吗?

好的,

我想我明白你想做什么,是的,这是可能的!

这是诀窍。通过以下代码编辑default_blog_page路由:

default_blog_page:
path:     /{type}/{page}
defaults: { _controller: AcmeBlogBundle:Default:index, type: "page", page: 1}
requirements:
    page: 'd+
    type: page

使用此路由,如果您设置页面参数,它将自动添加默认类型值"page",但如果它是默认值,则不会。尽管您可以删除重定向路由,因为此路由处理所有情况。

希望这对:)有所帮助