在我的symfony2应用程序中,我想要我的页面的特定路由,与我的seo一起工作,但我收到一些严重的问题,我不理解它们。
实施例
两条路线:
blog_article:
path: /blog/{slug}
defaults: {_controller: ApplicationEDBlogBundle:Blog:singleArticle}
product:
path: /{category}/{name}
defaults: { _controller: MpShopBundle:Product:view}
product
路由正常,但blog_article
路由始终重定向到product
路由..
根据我的理解,如果我打开博客:/blog/firstBlog/
默认情况下它认为博客是一个类别,firstBlog是产品名称,因为我的product
路线是最后一条路线。
但是,如果在我的树枝上,我具体说明要去哪条路线,它不应该起作用吗?
例如:{{ path('blog_article', {slug: blog.slug}) }}
。不应该查看blog_article
路由并打开所需的控制器吗?或者它不起作用?
如果是这样,如何以我想要的方式保留我的漂亮网址?
答案 0 :(得分:0)
不,它不会那样工作,即您的示例路径代码并不意味着路由应该查找blog_article路由:
树枝路径功能只是将路径扩展到实际网址(/ blog / yourslug),当实际访问该网址时,系统会从网址到路径进行相反的匹配(匹配到任何一个网址)上面列出的第一个两个路线定义。)
如果您有这种路线,解决方案是将它们整齐地按正确的顺序排列(大多数通用的 - 在这种情况下的产品 - 始终是最后一个),或者如果无法订购,您可以尝试如果适用,可以通过放置一些特定的路线要求来解决这个问题。
答案 1 :(得分:0)
将路线更改为
blog_article:
path: /blog/{slug}
defaults: {_controller: ApplicationEDBlogBundle:Blog:singleArticle}
product:
path: /cat/{category}/{name}
defaults: { _controller: MpShopBundle:Product:view}
并且没问题。
在您的示例中,{category}可能是"博客" ,所以第一条路线匹配。
如果您更改订单(产品将是第一个),它也可以工作。但它不是一个好的解决方案(如果有人添加类别博客怎么办?)