Hybris:找不到与当前 URL 关联的 CMSSite
Posted
技术标签:
【中文标题】Hybris:找不到与当前 URL 关联的 CMSSite【英文标题】:Hybris: cannot find CMSSite associated with current URL 【发布时间】:2015-07-02 20:33:56 【问题描述】:我使用给定模板之一创建了一个新的 Hybris 扩展。 构建成功,我也可以启动服务器了。
但是从 HAC 打开网络链接时,我收到错误“找不到与当前 URL 关联的 CMSSite”。
有解决或调查此问题的建议吗?
【问题讨论】:
【参考方案1】:您需要使用 hosts 文件映射或使用 site-ID 参数来避免 500 错误。
请点击这些链接
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 hosts 修改允许加速器从 url 中识别站点(CMSSites)。这使得 URL 整洁干净。
主机文件更改后,可以这样访问网站
http://hybris.local:9001/yacceleratorstorefront/
如果您不这样做,则需要使用类似这样的附加请求参数来标识站点
http://localhost:9001/yacceleratorstorefront/?site=hybris&clear=true
【讨论】:
【参考方案2】:错误“找不到与当前 URL 关联的 CMSSite”。
这是因为你没有告诉 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
【讨论】:
【参考方案3】:除了主机条目之外,请确保为您的网站添加适当的正则表达式。
CMS 站点有一个名为 urlPatterns 的属性。这是网站 CMS 过滤器匹配的正则表达式列表,以确定用户尝试访问的店面。
最简单的方法是向 CMS 站点添加更多正则表达式,如下所示:
(?i)^https?://[^/]*/yacceleratorstorefront((?![\?\&]site=).)*
在运行时,您可以在 hybris 管理控制台 (hMC) 中执行此操作。导航到 WCMS 网站您的站点名称属性选项卡并编辑 URL 模式部分。
要使更改永久生效,请将适当的代码添加到在初始化的项目数据阶段运行的 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=).)*;
【讨论】:
【参考方案4】:如果服务器以不满足的 spring bean 依赖项启动,通常会出现此问题。请检查您的服务器启动日志以确认哪个或哪些特定 bean 未能初始化。
【讨论】:
以上是关于Hybris:找不到与当前 URL 关联的 CMSSite的主要内容,如果未能解决你的问题,请参考以下文章
CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑
CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑