Я пытаюсь перенаправить поддомен в конкретный пакет в Symfony2. Вот что у меня есть:
Я добавил локальные домены к своим хостам:
127.0.0.1 todolist.lc
127.0.0.1 manager.todolist.lc
Я создал виртуальный хост, который перенаправляет все субдомены в мою установку Symfony:
<VirtualHost 127.0.0.1>
ServerName todolist.lc
ServerAlias *.todolist.lc
DirectoryIndex app_dev.php
DocumentRoot "C:\xampp\htdocs\todolist\web"</VirtualHost>
Я создал новый Bundle для обработки субдомена manager.todolist.lc:
Сейчас я пытаюсь настроить маршрут к manager.todolist.lc:
frontend:
resource: "@FrontendBundle/Controller/"type: annotation
prefix: /
backend:
resource: "@BackendBundle/Controller/"type: annotation
prefix: /api
manager:
host: manager.todolist.lc
resource: "@ManagerBundle/Controller/"type: annotation
prefix: /
Теперь, после добавления менеджера маршрута, я получаю исключение FileLoaderImportCircularReferenceException на каждом существующем маршруте.
Я также пытался использовать префикс, но это также дает исключение:
manager:
resource: "@ManagerBundle/Controller/"type: annotation
prefix: /manager
Я не могу понять, чего мне не хватает. Что я делаю неправильно? Если вам нужна дополнительная информация, просто спросите об этом в комментариях, и я предоставлю ее.
Хорошо. Вот чего мне не хватало:
1. Я забыл загрузить пакет в AppKernel
Очевидно, это очень важно:
new FrontendBundle\FrontendBundle(),
new BackendBundle\BackendBundle(),
new ManagerBundle\ManagerBundle(),
2. Субдомен должен быть объявлен перед основным доменом
После того, как я загрузил пакет в AppKernel, приложение все равно будет перенаправлено на FrontController. Я решил это, изменив порядок моих маршрутов:
manager:
host: manager.todolist.lc
resource: "@ManagerBundle/Controller/"type: annotation
prefix: /
frontend:
resource: "@FrontendBundle/Controller/"type: annotation
prefix: /
backend:
resource: "@BackendBundle/Controller/"type: annotation
prefix: /api
После изменения порядка маршрутов работали как manager.todolist.lc, так и todolist.lc.
Других решений пока нет …