如何在 Symfony 上匹配 CNAME

How to match CNAME's on Symfony

我有这条路线:

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。

可以这样做:

You have to specifiy hosts in order in 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 将处理指向我的服务器的所有其他域。如果user/customer域.

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