Spartacus多站点支持

问题描述

我正在尝试在我的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应用,以便它可以侦听任何本地域。