在我们的工作中,遇到了一个关于Sitecore站点定义的问题,导致在Sitecore 10.1.3的CD环境中出现了链接生成错误的情况。在此,我将分享这个问题的细节以及解决方案。
https://archive.doc.sitecore.com/xp/en/SdnArchive/SDN5/Articles/Administration/Configuring%20Multiple%20Sites/Adding%20New%20Site/site%20Attribute%20Properties/targetHostName.html
https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB1000633
具体现象是在站点A引用站点B的节点时,链接里的/sitecore/content关键字没有被正确解析,导致链接生成错误。需要特别注意的是,这个问题只在CD环境中出现,而在CM环境中是正确的。
由于CD环境不能调试,我们创建aspx文件上传到测试CD环境中,来尝试打印一些关键属性
<%@ Language=C# %>
<%@ Import Namespace="Sitecore.Sites" %>
<HTML>
<script runat="server" language="C#">
void MyButton_OnClick(Object sender, EventArgs e)
{
var defaultSiteContextFactory = new DefaultSiteContextFactory();
foreach (var site in defaultSiteContextFactory.GetSites())
{
var poperty = site.Properties["enablePreview"];
MyLabel.Text += $"Name:{site.Name};\tRootPath:{site.RootPath};\tStartItem:{site.StartItem};\tHostName:{site.HostName};\tTargetHostName:{site.TargetHostName};\tEnablePreview:{site.EnablePreview};\tPropertyEnablePreview:{poperty}; <br />";
}
MyLabel.Text +="<br /><br />";
MyLabel.Text += $"Setting.Preview.Enabled: {Sitecore.Configuration.Settings.Preview.Enabled} <br />";
}
</script>
<body>
<form id="MyForm" runat="server">
<asp:button id="MyButton" text="Print" OnClick="MyButton_OnClick" runat="server"></asp:button>
<br />
<asp:label id="MyLabel" runat="server"></asp:label>
</form>
</body>
</HTML>
在分析问题时,我们发现问题根源主要出在Sitecore站点定义时。缺少了一个关键的配置项,即targetHostName
,以及一个重要的属性enablePreview
没有被显示声明。自定义站点都是继承website
默认website站点中的enablePreview
属性是"true", 在本地环境和CM环境中,也都是正确的。但是CD环境中所有自定义站点以及website
的enablePreview
属性都是"false", 目前还不知道为什么。
在sitecore中的website
站点的默认定义如下:
<site name="website" enableTracking="true" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/home" language="en" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="50MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="25MB" filteredItemsCacheSize="10MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" cacheRenderingParameters="true" renderingParametersCacheSize="10MB" enableItemLanguageFallback="false" enableFieldLanguageFallback="false" role:require="Standalone or ContentManagement or XMCloud or ContentDelivery or DedicatedDispatch" />
为了解决这个问题,我们采取了以下关键步骤:
添加targetHostName: 在Sitecore站点定义中,确保添加了正确的targetHostName
,以保证CD环境中的链接能够正确解析。
明确声明enablePreview属性: 确保在站点定义中明确声明了enablePreview
属性。这对于CD环境的正常工作至关重要。
一个值得强调的关键细节是,由于CD的hostname具有通用性,缺少这两个配置项导致CD无法正确工作。相比之下,CM的hostname是固定的,不受此问题影响。
这个细节对于理解问题的本质和解决方案的有效性非常关键。
通过添加正确的targetHostName
和明确声明enablePreview
属性,我们成功解决了Sitecore 10.1.3 CD环境中的Sitecore问题。这个经验提醒我们在站点定义时要特别注意这些关键配置,以确保系统在不同环境下都能够正常运行。
希望这篇分享能对遇到类似问题的同行提供帮助。如果你有任何疑问或补充,请随时在评论区分享。
还没有人评论,抢个沙发吧...