为Symfony 4中的路由配置默认主机

问题描述 投票:1回答:1

到目前为止,我的Symfony应用程序托管一个域。现在,我需要在另一个域上托管几个页面。出于业务原因,即使它实际上属于同一应用程序,也必须对用户显示为单独的域。

说我的应用托管在example1.com上。我需要在example2.com上托管一些页面。

所以我创建了一个新的控制器:

class NewsletterController extends AbstractController
{
    /**
     * @Route("/unsubscribe", name="newsletter_unsubscribe", host="example2.com")
     */
    public function unsubscribe(): Response
    {
        return $this->render('newsletter/unsubscribe.html.twig');
    }
}

这很好;该页面已正确投放,并且仅当在/unsubscribe上请求时才路由example2.com路径。在example1.com上,它按预期返回404

问题是,现在打算在主域example1.com上进行匹配的所有路由,也在example2.com上也进行了匹配,这不是我想要的。

当然,我可以将所有其他@Route注释更改为包括host="example1.com",但这很麻烦,将来容易出错。

默认情况下是否有一种方法要求所有路由都需要host,除非在@Route注释中覆盖?

symfony routing symfony4
1个回答
1
投票

这不是最终解决方案,但可以提供帮助...

您可以为每个控制器类设置@ Route批注,并为每个域分开您的控制器...

/**
 * @Route(host="example2.com")
 */
class NewsletterController extends AbstractController
{
    /**
     * @Route("/unsubscribe", name="newsletter_unsubscribe")
     */
    public function unsubscribe(): Response
    {
        return $this->render('newsletter/unsubscribe.html.twig');
    }
}

我们很快就会找到更好的解决方案:)

© www.soinside.com 2019 - 2024. All rights reserved.