Я хочу обрабатывать динамический поддомен в моем приложении Symfony 4.
Я ищу такую конфигурацию:
Я пробую этот код, но не работает. Всегда совпадает с HomeController. StoreController никогда не соответствует.
И когда я пробую эту конфигурацию, запрос "domain.com" показывает мне "Добро пожаловать в nginx!" страница.
class StoreController extends AbstractController
{
/**
* @Route("/", name = "store_home", host = "{store_name}.domain.test")
*/
public function storeHomepage()
{
return $this->render('store/index.html.twig');
}
}
class HomeController extends AbstractController
{
/**
* @Route("/", name = "site_home")
*/
public function homePage()
{
return $this->render('site/home/index.html.twig');
}
}
А вот моя конфигурация nginx:
server {
listen 80;
server_name *.domain.test;
root /site/root/public;
location config bla bla bla;
}






I'm trying this code but is not working. Its always match with HomeController. StoreController never matching.
Вы используете маршрутизацию аннотаций, поэтому маршруты загружаются в алфавитном порядке.
Сначала будет протестирован ваш домашний контроллер, и он будет соответствовать, потому что вы не наложили на него никаких ограничений.
Попробуйте явно указать хост.
class HomeController extends AbstractController
{
/**
* @Route("/", name = "site_home", host = "domain.test")
*/
public function homePage()
{
return $this->render('site/home/index.html.twig');
}
}
And when I try this configuration "domain.com" request show to me "Welcome to nginx!" page.
Я не совсем специалист по nginx, но считаю, что server_name *.domain.test; означает все поддомены, но исключает основной домен. Попробуйте как server_name .domain.test;
В конфигурации NGINX вы можете указать несколько server_name, например: имя_сервера example.org www.example.org;
Это должно сработать для вас:
server {
listen 80;
server_name *.domain.test domain.test;
root /site/root/public;
location config bla bla bla;
}
Работает на меня. Спасибо.