首页 > 解决方案 > Symfony 4 动态子域路由和 Nginx 配置

问题描述

我想在我的 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;
}

标签: phpsymfonynginxsymfony4

解决方案


我正在尝试此代码,但无法正常工作。它总是与 HomeController 匹配。StoreController 从不匹配。

您正在使用注释路由,因此路由按字母顺序加载。

您的家庭控制器将首先尝试,它会匹配,因为您没有对其施加任何限制。

尝试显式设置主机。

class HomeController extends AbstractController
{
    /**
     * @Route("/", name="site_home", host="domain.test")
     */
    public function homePage()
    {
        return $this->render('site/home/index.html.twig');
    }
}

当我尝试这个配置时,“domain.com”请求向我显示“欢迎使用 nginx!” 页。

我不是真正的 nginx 专家,但我相信这server_name *.domain.test;意味着所有子域,但不包括主域。试试看server_name .domain.test;


推荐阅读