Symfony 4 动态子域路由和 Nginx 配置
Symfony 4 Dynamic Subdomain Routing and Nginx Config
我想在我的 Symfony 4 应用程序中处理动态子域。
我正在寻找这样的配置:
- store1.domain.com => StoreController::index
- store2.domain.com => StoreController::index
- www.domain.com => HomeController::homePage
- domain.com => HomeController::homePage 等等等等
我正在尝试此代码但无法正常工作。它始终与 HomeController 匹配。 StoreController 从不匹配。
当我尝试此配置时 "domain.com" 请求向我显示 "Welcome to 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,例如:
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;
}
我想在我的 Symfony 4 应用程序中处理动态子域。
我正在寻找这样的配置:
- store1.domain.com => StoreController::index
- store2.domain.com => StoreController::index
- www.domain.com => HomeController::homePage
- domain.com => HomeController::homePage 等等等等
我正在尝试此代码但无法正常工作。它始终与 HomeController 匹配。 StoreController 从不匹配。
当我尝试此配置时 "domain.com" 请求向我显示 "Welcome to 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,例如: 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;
}