到目前为止,我的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
注释中覆盖?
这不是最终解决方案,但可以提供帮助...
您可以为每个控制器类设置@ 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');
}
}
我们很快就会找到更好的解决方案:)