Asp.net mvc 5 Sitecore多站点链接

Asp.net mvc 5 Sitecore多站点链接,asp.net-mvc-5,sitecore,sitecore-mvc,Asp.net Mvc 5,Sitecore,Sitecore Mvc,我在Sitecore中创建了三个站点(在同一个实例中)。现在我必须提供当前站点上其他两个站点的跨站点链接。如何通过代码实现。(不使用硬编码路径)您需要在“站点定义”中定义两个站点,您将有如下内容: <site name="website_1" hostName="www.site1.com" language="en" cacheHtml="false" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/si

我在Sitecore中创建了三个站点(在同一个实例中)。现在我必须提供当前站点上其他两个站点的跨站点链接。如何通过代码实现。(不使用硬编码路径)

您需要在“站点定义”中定义两个站点,您将有如下内容:

 <site name="website_1" hostName="www.site1.com" language="en" cacheHtml="false" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/site1" startItem="/home" database="web" domain="extranet" allowDebug="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" />
 <site name="website_2" hostName="www.site2.com" language="en" cacheHtml="false" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/site2" startItem="/home" database="web" domain="extranet" allowDebug="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" />

现在,当访问www.site1.com时,您将获得/sitecore/content/site1/home的主页,而www.site2.com将返回/sitecore/content/site2/home的主页

假设您在/site1/home/subitem页面上创建了指向/site2/home/subitem的链接。在Sitecore内部,它存储为GUID。但在呈现时,LinkManager确保链接呈现为www.site2.com/subitem.aspx

这样做是因为在web.config中,默认情况下启用了SiteResolving:

一, 当SiteResolving为true时,LinkManager将从web.config中的部分解析正确的站点。它进行最佳匹配并查找页面所属的站点,并根据找到的站点的上下文解析主机名和URL

如果禁用站点解析,LinkManager将保留在当前上下文中。该链接将是www.site1.com/sitecore/content/site2/home/subitem.aspx

您可以在以下链接中找到更多信息:


Siteresolving需要打开,如果每个站点有一个域,它通常就可以工作。有时,它还取决于内容树的外观以及web.config中站点定义的顺序

此处解释了更多信息和更糟糕的嵌套场景:

您是否尝试将
targetHostName
添加到每个站点定义中(例如
是否可以检查此值是否为真?