问题描述
在我的Symfony 5项目中,我希望根据所处的环境(开发,生产)为控制器使用不同的子域。
为此,我创建了:
config/routes/dev/annotations.yaml
和
config/routes/prod/annotations.yaml
每个文件都包含自己的控制器主机。
config / routes / dev / annotations.yaml :
blog_controllers:
resource: ../../../src/Controller/BlogController.PHP
type: annotation
host: 'blog.{domain}'
defaults:
domain: '%domain%'
requirements:
domain: '%domain%'
app_controllers:
resource: ../../../src/Controller/HomeController.PHP
type: annotation
host: 'app.{domain}'
defaults:
domain: '%domain%'
requirements:
domain: '%domain%|www.%domain%'
config / routes / prod / annotations.yaml:
blog_controllers:
resource: ../../../src/Controller/BlogController.PHP
type: annotation
host: 'prod.blog.{domain}'
defaults:
domain: '%domain%'
requirements:
domain: '%domain%'
%domain%
是我.env中的APP_DOMAIN,没问题。
因此,当我使用prod environment
时,当我尝试访问https://prod.blog.[myDomain]
(博客项目部分的主页)时,我将重定向到{{1 }}。我不知道为什么...
我的控制器:
BlogController.PHP:
HomeController
HomeController.PHP:
class BlogController extends AbstractController
{
/**
* @Route("/",name="blog")
*/
public function index()
{
return $this->render('blog/index.html.twig');
}
}
编辑:
我使用此配置进行了测试:
只需在产品中,在 /config/prod/annotations.yaml
中设置此路由class HomeController extends AbstractController
{
/**
* @Route("/",name="home")
*/
public function index()
{
return $this->render('home/index.html.twig');
}
}
没有开发环境的主机。
因此,在生产环境中,如果我创建 debug:router ,则表示:
[![在此处输入图片描述] [1]] [1]
所以这里的两条路线都是正确的。
一方面,http s://myDomain.com可以访问的无子域的“家庭”路由
,另一方面,可通过http s://blog.myDomain.com
访问的“博客”路由可以吗?
但是当我启动http://blog.myDomain.com/时,显示的是Home控制器!
编辑2:好的,我找到了解决方法。
只需为“ home”路由添加主机,就像这样:
blog_controllers:
resource: ../../../src/Controller/BlogController.PHP
type: annotation
host: 'blog.{domain}'
defaults:
domain: '%domain%'
requirements:
domain: '%domain%'
无子域。可以。
谢谢! [1]:https://i.stack.imgur.com/GPJlN.png
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)