2

我正在尝试缩短我公司使用 sitecore 开发的网站的网址。我一直在这里查看 Alex Shyba 的博客文章此处的Sitecore 文档,但它似乎不起作用。我想缩短的是从到localhost:8081/sitecore/Content/Sites/HeinzABCID/Dapur.aspxlocalhost:8081/Dapur.aspx

该网址是由LinkManager.GetItemUrl()方法生成的。我的代码如下所示以获取选项和链接。

UrlOptions opt = (UrlOptions)UrlOptions.DefaultOptions.Clone();
opt.SiteResolving = Sitecore.Configuration.Settings.Rendering.SiteResolving;
linkToResep.NavigateUrl = LinkManager.GetItemUrl(citem, opt);

在我的配置中,web.config我已经将配置如下。

<linkManager defaultProvider="sitecore">
  <providers>
    <clear/>
    <add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel"
         addAspxExtension="true"
         alwaysIncludeServerUrl="false"
         encodeNames="true"
         languageEmbedding="asNeeded"
         languageLocation="filePath"
         shortenUrls="true"
         useDisplayName="true"/>
  </providers>
</linkManager>

我的 web.config 中的configuration/sitecore/sites/sitewithname="website"部分如下。

<site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/Content/Sites/HeinzABCID" startItem="/Home" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" language="en" disableClientData="false"/>

我没有任何其他站点,只有默认站点(shell、登录、管理员、服务、modules_shell 和 modules_website)。

这是我网站的网站结构。

/sitecore/content/sites
    +Sites
    +---+HeinzABCID
        +---+Dapur
            +Search
            +Other Items

请帮我 :)

4

4 回答 4

3

我遇到了类似的问题,/sitecore/content/site 出现在我的 URL 中。

就我而言,这是错误的站点上下文 - 运行 sitecore shell 上下文而不是网站上下文。这是用于切换的代码:

// Store the current site context name
string oldSiteName = Sitecore.Context.GetSiteName();

// Change the website context
Sitecore.Context.SetActiveSite("website");

// Generate the link
string url = LinkManager.GetItemUrl(item);

// Change back to the old site context
Sitecore.Context.SetActiveSite(oldSiteName);
于 2015-04-22T07:22:30.530 回答
0

看起来您的站点配置不正确。根据您的 Sitecore 树,我认为应该是:

<site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/Content/Sites" startItem="/HeinzABCID" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" language="en" disableClientData="false"/>

您可能还想查看 Sitecore SDN 上的这篇文章,以在单个 Sitecore 实例中配置多个站点: Sitecore SDN:配置多个站点

根据本文档,URL 将相对于您的“网站”站点标签中定义的“startItem”创建。

于 2013-03-06T20:11:00.523 回答
0

使用正则表达式替换我成功地缩短了 URL。我还可以设法在多个站点上使用它。

public static string ShortenURL(string URLToShorten)
{
    return Regex.Replace(URLToShorten,@"sitecore/content/sites/[\w]{1,}/","");
}

可以在此处找到包含 SEO 的解决方案的完整描述。

于 2013-03-31T18:08:22.963 回答
0

It may also help if your site definition has a targethostname defined.

于 2015-12-02T06:19:30.027 回答