Sitecore缩短url似乎不起作用

本文关键字:不起作用 url 缩短 Sitecore | 更新日期: 2023-09-27 17:53:08

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

该url由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>

configuration/sitecore/sites/sitename="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, login, admin, service, modules_shell和modules_website)。

这是我网站的网站结构。

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

请帮帮我:)

Sitecore缩短url似乎不起作用

我有一个类似的问题,在我的url中显示/sitecore/content/site

在我的情况下,是网站上下文是错误的-运行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);

看起来您的站点配置不正确。根据你的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将相对于你的'website'网站标签中定义的'startItem'创建。

使用regex替换我成功缩短了URL。我也可以在多个站点使用它。

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

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

如果您的站点定义中定义了targethostname,则可能会有所帮助。