如何在Symfony上匹配CNAME

时间:2016-10-26 12:00:22

标签: symfony cname

我有这条路线:

api:
    resource: "@WebApiBundle/Resources/config/routing.yml"
    prefix:   /
    host: api.mydomain.com

我想让用户将他们的域名CNAME添加到api.mydomain.com,当他们使用自己的域名时,例如api.anotherdomain.comanotherdomainwithoutsubdomain.com我想显示api路由。

我试过了:

api:
    resource: "@WebApiBundle/Resources/config/routing.yml"
    prefix:   /
    host: "{domain}" # and also "{subdomain}.{domain}"

但它没有奏效。它仅用于主路由,而不是WebApiBundle

我如何在Symfony上执行此操作?顺便说一下,我使用Symfony3。

1 个答案:

答案 0 :(得分:0)

可以这样做:

  

您必须在routing.yml中按顺序指定主机。

所以,这就是它的工作原理。所有指定的主机都会执行其路由,其他主机将遵循最后一条规则。见例:

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

web_main:
    resource: "@MyWebMainBundle/Resources/config/routing.yml"
    prefix:   /
    host: www.my.com

web_api:
    resource: "@MyWebApiBundle/Resources/config/routing.yml"
    prefix:   /
    host: api.my.com

web_public_api:
    resource: "@MyWebPublicApiBundle/Resources/config/routing.yml"
    prefix:   /

在这种情况下,web_public_api将处理指向我的服务器的所有其他域。如果是用户/客户域。

稍后,在控制器或中间件中,检查数据库中是否存在域。如果不存在,请返回404403或甚至500