php - Symfony 4 动态子域路由和 Nginx 配置
问题描述
我想在我的 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”请求向我显示“欢迎使用 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;
}
解决方案
我正在尝试此代码,但无法正常工作。它总是与 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;
推荐阅读
- javascript - 如何使垂直导航默认状态为折叠?
- python - for 循环中的 os.kill 抛出异常
- javascript - 单击 ng2-pdf 查看器呈现的 pdf 中的链接不起作用
- go - 使用 cgo 从 go vet 获取所有错误
- r - 如何有效地并行化光栅包 R 中的 EXTRACT 函数
- algorithm - 对包含随机数的数组进行排序
- svg - 色调旋转滤镜背后的确切数学是什么
- codenameone - 重叠的 Toastbar 消息
- php - 当允许用户链接来自外部来源的图像时,我可以采取哪些步骤来提高安全性?
- json - React Native POST 方法问题