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 您想要访问哪个站点。
可以通过三种方式做到这一点
只需在您的第一个请求中将您的站点 ID 作为请求参数 (?site=SiteID) 传递,这有助于 Hybris 了解您尝试访问的站点。假设我正在尝试访问 powertools 站点,那么 URL 将是
https://localhost:9002/yacceleratorstorefront?site=powertools
使用 siteID 作为 DNS 名称访问站点。您可以使用 <siteID>.local
创建 127.0.0.1 主机。假设我想访问一个 powertools(它是 powertools 的 CMSSite id),然后在你的主机文件中添加一个像 127.0.0.1 powertools.local
这样的条目,然后使用 http://powertools.local:9001/yacceleratorstorefront/ 而不是 localhost
在您的 CMSSite 的 urlPatterns 中添加您选择的新正则表达式。这样您就可以随心所欲地访问您的站点。假设我想仅使用 localhost URL 访问站点,而无需传递 ?site=powertools 。所以我需要向 powertools CMSSite 的 urlPatterns 添加一个新的正则表达式,如 (?i)^https?://[^/].*$
。现在我可以使用 https://localhost:9002/yacceleratorstorefront/
直接打开 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 未能初始化。
我使用给定的模板之一创建了一个新的 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 您想要访问哪个站点。
可以通过三种方式做到这一点
只需在您的第一个请求中将您的站点 ID 作为请求参数 (?site=SiteID) 传递,这有助于 Hybris 了解您尝试访问的站点。假设我正在尝试访问 powertools 站点,那么 URL 将是 https://localhost:9002/yacceleratorstorefront?site=powertools
使用 siteID 作为 DNS 名称访问站点。您可以使用
<siteID>.local
创建 127.0.0.1 主机。假设我想访问一个 powertools(它是 powertools 的 CMSSite id),然后在你的主机文件中添加一个像127.0.0.1 powertools.local
这样的条目,然后使用 http://powertools.local:9001/yacceleratorstorefront/ 而不是 localhost在您的 CMSSite 的 urlPatterns 中添加您选择的新正则表达式。这样您就可以随心所欲地访问您的站点。假设我想仅使用 localhost URL 访问站点,而无需传递 ?site=powertools 。所以我需要向 powertools CMSSite 的 urlPatterns 添加一个新的正则表达式,如
(?i)^https?://[^/].*$
。现在我可以使用 https://localhost:9002/yacceleratorstorefront/ 直接打开 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 未能初始化。