Как сопоставить CNAME в Symfony

У меня есть этот маршрут:

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

Я хочу позволить пользователям добавлять CNAME свои домены на api.mydomain.com и, когда они используют свой собственный домен, например api.anotherdomain.com или же anotherdomainwithoutsubdomain.com Я хочу показать маршрут API.

Я попробовал это:

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

но это не сработало. Это просто идет к основной маршрутизации вместо WebApiBundle,

Как я могу сделать это на Symfony? Я пользуюсь Symfony3, кстати.

1 ответ

Решение

Это можно сделать так:

Вы должны указать хосты в порядке в 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 будет обрабатывать все другие домены, которые указали на мой сервер. В случае, если домен пользователя / клиента.

Позже, в контроллере или промежуточном программном обеспечении, проверьте домен, если он присутствует в вашей базе данных. Если нет, верните 404 или же 403 или даже 500,

Другие вопросы по тегам