Как сопоставить 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
,