Hybris:找不到与当前 URL 关联的 CMSSite

Hybris: cannot find CMSSite associated with current URL

我使用给定的模板之一创建了一个新的 Hybris 扩展。
构建成功,我也可以启动服务器了。

但是当从 HAC 打开网络链接时,我收到错误 "Cannot find CMSSite associated with current URL"

是否有解决或调查此问题的建议?

您需要使用主机文件映射或使用站点 ID 参数来避免 500 错误。

请关注这些link

https://wiki.hybris.com/display/accdoc/Just+One+Storefront

https://help.hybris.com/6.3.0/hcd/8ae0711f86691014877ae05249b2f5ac.html(Hybris 6)

如果您有管理员权限,最好在主机文件中添加以下条目。

127.0.0.1 hybris.local [示例]

etc 主机修改允许加速器从 url 识别站点 (CMSSites)。这使得 URL 整洁干净。

主机文件更改后,您可以像这样访问站点

http://hybris.local:9001/yacceleratorstorefront/

如果您不这样做,则需要使用像这样的附加请求参数来标识站点

http://localhost:9001/yacceleratorstorefront/?site=hybris&clear=true

除了主机条目外,请确保为您的网站添加适当的正则表达式。

CMS 站点有一个名为 urlPatterns 的属性。这是网站 CMS 过滤器匹配的正则表达式列表,用于确定用户尝试访问的店面。

最简单的方法是向 CMS 站点添加一个正则表达式,如下所示:

(?i)^https?://[^/]*/yacceleratorstorefront((?![\?\&]site=).)*

在运行时,您可以在hybris Management Console(hMC) 中完成。导航到 WCMS 网站 Your Site Name Properties 选项卡并编辑 URL Patterns 部分。

要使更改永久生效,请在初始化的项目数据阶段将适当的代码添加到 CMS 站点设置 ImpEx 脚本 运行,例如用于电子产品店面

# CMS Site
UPDATE CMSSite;uid[unique=true];urlPatterns;
;electronics;(?i)^https?://[^/]+(/[^?]*)?\?(.*\&)?(site=electronics)(|\&.*)$,(?i)^https?://electronics\.[^/]+(|/.*|\?.*)$,(?i)^https?://api\.hybrisdev\.com(:[\d]+)?/rest.*$,(?i)^https?://[^/]*/yacceleratorstorefront((?![\?\&]site=).)*;

Error "Cannot find CMSSite associated with current URL".

这是因为您没有告诉 hybris 您想要访问哪个站点。

可以通过三种方式做到这一点

  1. 只需在您的第一个请求中将您的站点 ID 作为请求参数 (?site=SiteID) 传递,这有助于 Hybris 了解您尝试访问的站点。假设我正在尝试访问 powertools 站点,那么 URL 将是 https://localhost:9002/yacceleratorstorefront?site=powertools

  2. 使用 siteID 作为 DNS 名称访问站点。您可以使用 <siteID>.local 创建 127.0.0.1 主机。假设我想访问一个 powertools(它是 powertools 的 CMSSite id),然后在你的主机文件中添加一个像 127.0.0.1 powertools.local 这样的条目,然后使用 http://powertools.local:9001/yacceleratorstorefront/ 而不是 localhost

  3. 在您的 CMSSite 的 urlPatterns 中添加您选择的新正则表达式。这样您就可以随心所欲地访问您的站点。假设我想仅使用 localhost URL 访问站点,而无需传递 ?site=powertools 。所以我需要向 powertools CMSSite 的 urlPatterns 添加一个新的正则表达式,如 (?i)^https?://[^/].*$。现在我可以使用 https://localhost:9002/yacceleratorstorefront/

  4. 直接打开 powertools 站点

您也可以使用 Impex 做到这一点

$siteUid=mysite       
# CMS Site                                                                                                 
INSERT_UPDATE CMSSite ; uid[unique=true] ; urlPatterns                                                                                                                  ;      
                      ; $siteUid         ; (?i)^https?://[^/]+(/[^?]*)?\?(.*\&)?(site=$siteUid)(|\&.*)$,(?i)^https?://$siteUid\.[^/]+(|/.*|\?.*)$,(?i)^https?://[^/].*$ ;

找到详细的answer here

如果服务器以未满足的 spring bean 依赖项启动,通常会出现此问题。请检查您的服务器启动日志以确认哪个或哪些特定 bean 未能初始化。