【发布时间】:2014-11-06 16:06:47
【问题描述】:
除非指定主机,否则 AFAIK Symfony2 在路由中与主机无关。
我目前不在我的应用程序中使用子域,但这将会改变。我想要的是,当主机中存在子域(http://subdomain.foo.bar)时,如果路由配置在主机中有子域,路由器只会匹配路由。
这应该匹配:(确实如此)
/**
* @Route("/", host="{subdomain}.%host%")
* @Template
*/
public function index()
这不应该匹配并返回 404:
/**
* @Route("/")
* @Template
*/
public function index()
由于前面提到的冷漠,这条路由也匹配到http://subdomain.foo.bar
所以我想要的是全局设置主机要求(foo.bar),然后指定特定路由,当子域存在时它们也应该匹配。
我尝试将主机要求添加到 app/config/routing.yml 中的导入:
foo:
resource: "@AcmeFooBundle/Controller/"
type: annotation
host: foo.bar
prefix: /
但是,当实际主机中存在子域时,该主机要求从注释中指定的要求中“胜出”,导致两条路由(上述)中的任何一条都不匹配。
有效的是为每个控制器全局设置主机名:
/**
* @Route(host="foo.bar")
*/
class bazController
但我更愿意在全局的某个地方进行配置。
有谁知道如何解决这个问题?
【问题讨论】: