升级时,同一网站的两个独立实例之间的Sitecore链接管理

时间:2016-03-01 17:47:36

标签: hyperlink sitecore

我们有一个包含大量遗留代码的Sitecore 6.5 Webforms解决方案,我们希望将其完全重写为Sitecore 8.1 MVC。该项目非常庞大,在新版本中需要大约一年的时间才能完成所有工作,所以我们决定同时维护这两个系统,并在我们取得进展的同时逐步关闭旧网站。新的。

我们将为每个Sitecore实例提供单独的服务器,并使用负载均衡器处理旧/新版本之间的URL。我们希望保留现有的所有现有网址。我们将把现有内容1:1迁移到新系统,但我们可能会在新安装中有新页面。

当内容编辑器想要从旧系统指向新系统时,我对链接管理有疑问。例如,当我们想要在富文本编辑器中添加超链接时,从旧系统指向新系统中的新页面(旧系统中不存在) - 如果您尝试插入内部链接,则无法访问新内容树,还有你有guid的现有项目的链接:

<a href="~/link.aspx?_id=095E6A07668C4DA99B968EF5A90CE4CB&amp;_z=z">Link text</a>

显然会在新版本中发生变化,但无法正常运行。你知道处理这件事的好方法吗?

我知道可以在两个系统之间使用外部链接,但这种方法的用户体验非常差,如果你想添加一些链接需要更多的时间,所以我们正在寻找更好的解决方案来让内容编辑生活更轻松。

1 个答案:

答案 0 :(得分:1)

您可以使用Sitecore.Links.LinkManager.ExpandDynamicLinks()方法将动态链接转换为友好的URL。

您可以使用Sitecore.Links.LinkManager.ExpandDynamicLinks()方法将富文本编辑器(RTE)字段中的动态链接(包括内容和媒体链接)转换为友好链接 网址。 例如,要转换

中“文本”字段中的动态链接
    /Sitecore/Content/Home
主数据库中的

项:

 Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
 Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
 string containsDynamicLinks = home.Fields["text"].Value;
 string containsFriendlyLinks = Sitecore.Links.LinkManager.ExpandDynamicLinks(containsDynamicLinks, Sitecore.Configuration.Settings.Rendering.SiteResolving);
string finalMarkup =System.Text.RegularExpressions.Regex.Replace(containsFriendlyLinks,"([^/])~/media", "$1/~/media");

请参阅下文第5.4章https://sdn.sitecore.net/upload/sitecore6/64/content_api_cookbook_sc64_and_later-a4.pdf