在使用主机路由到Symfony中的子域时,如何忽略顶级域?

时间:2015-04-21 12:09:53

标签: symfony routing tld

我有一个网站,我使用domain.lc进行本地测试。该网站有一个子域sub.domain.lc,它路由到不同的控制器,如下所示:

my_bundle:
    host:     sub.domain.lc
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /

由于主机,子域路由到我的捆绑包,但我希望它也使用sub.domain.com路由到此捆绑包。有没有办法忽略使用主机的顶级域名?

2 个答案:

答案 0 :(得分:3)

您可以使用这样的占位符:

my_bundle:
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /
    host:     "{domain}"
    defaults:
        domain: "%domain%"
    requirements:
        domain: "sub\.domain\.(lc|com)"

但是生成绝对URL存在问题。这取决于您的应用当前运行的位置(loc或com),您需要将其指定为容器参数(parameters.yml是个好地方)。 Link to similar problem

答案 1 :(得分:0)

虽然kba确实提供了一个对我很有帮助的答案,但实际上我会接受他的答案,我想告诉你我的路线最终看起来像:

my_bundle:
    host:     sub.domain.{tld}
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /
    requirements:
        tld: lc|nl
    defaults:
        tld: nl

我没有在我的路线中使用服务容器参数,因为我知道我的域名不会改变。只有我的顶级域名可以更改。