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的主要内容,如果未能解决你的问题,请参考以下文章

hybris 智能编辑错误

Squirrel 客户端与 SAP Hybris

CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑

CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑

为啥 AssocQueryString 找不到与图像扩展关联的可执行文件?

找不到类 org.bouncycastle.cms.CMSSignedData