问题描述
我正在尝试在我的Spartacus应用程序中添加Multisite。我有两个域名(假设abc.in和xyz.in)。每当我点击abc.in时,它应该重定向到abc.in/electronic-spa/en,而点击xyz.in时,它应该重定向到xyz.in/apparal/en。
如何使用Spartacus中的MultiSite配置实现这一目标?
解决方法
多站点具有以下机制:
- 在商务后端中设置了多个站点(
BaseSite
)。每个站点可能都有一个自定义的产品和内容目录,但是将它们混合并匹配在一起非常灵活。客户正在使用各种组合来最终获得特定市场所需的实际站点/内容。 - 几乎所有API端点都将
site.uid
作为URL的一部分。相应的API可以轻松了解要返回的内容。 - 如果同一店面应用程序(在本例中为Spartacus)应使用单个API,则店面实际上必须知道
site.uid
,以便可以构造正确的API端点。除非您对它进行硬编码,否则店面通常不知道这一点。 - 商务平台具有使用所谓的正则表达式将店面URL链接到基础站点的功能。一个基础站点可以具有多个正则表达式来配置该基础站点所属的店面url。这是商务后端中非常古老的机制,已在(java)
CmsSiteFilter
中使用。在spartacus中,我们不能使用此过滤器,但是我们使用的是类似的过滤器机制。使用相同的正则表达式模式来过滤站点,但这是在客户端完成的。
要使其正常工作,您需要做的事情:
- 在后端使用最低1905版本(否则
/basesites
端点不可用) - 设置本地主机文件,以在本地模拟基于域的URL
- 设置基本正则表达式(urlPatterns),使其与实际的域URL匹配
- 使用
--disable-host-check
标志运行您的Spartacus应用,以便它可以侦听任何本地域。