问题描述
sitecore/content/site1
sitecore/content/site2
对于 site1 中引用的 site2 的每个项目,我得到以下 URL:
www.site1.com/sitecore/content/site2/item
代替
我调试了 Sitecore.Sites.DefaultItemSiteResolver 并发现,只有将“启用预览”站点属性设置为 true 才能解析该站点:
但是现在,在将其设置为 true 后,我遇到了另一个问题,页面解析现在也可以在预览中使用(这不是所需的行为,我只想在那里解析“webiste”站点)。它甚至会忽略设置为 false 的“Preview.ResolveSite”设置。
我做错了什么?如何为已发布的站点启用站点解析,但不为预览启用站点解析?
解决方法
Sitecore.config
中有几个设置有助于在多站点 Sitecore 解决方案中配置正确的站点解析逻辑:
-
Rendering.SiteResolving
— 启用站点解析,因此可以使用正确的主机名、语言和虚拟文件夹呈现跨站点链接。 -
Rendering.SiteResolvingMatchCurrentSite
— 构建跨站点链接时会考虑项目位置。某个站点根目录下的所有项目都将在该根目录的上下文中解析。 -
Rendering.SiteResolvingMatchCurrentLanguage
— 如果为真,则在构建跨站点链接时会考虑上下文语言。
对于任何多站点解决方案,建议将 Rendering.SiteResolving
设置值保持为 true
,以确保使用正确的参数构建跨站点链接。在这种情况下,如果无法解析其他站点,则会在 Preview.DefaultSite
设置中定义的站点的上下文中打开体验编辑器和预览模式。
要确保项目在正确站点的上下文中打开,您必须将 Rendering.SiteResolvingMatchCurrentSite
设置设置为 true
。