Symfony 5-为环境使用不同的主机开发,生产

问题描述

在我的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 (将#修改为@)