sitecore缩短网址似乎不起作用

时间:2013-01-15 12:55:58

标签: c# sitecore

我正在尝试缩短我公司使用sitecore开发的网站的网址。我一直在研究Alex Shyba的博客文章here和Sitecore文档here,但它似乎不起作用。我想缩短的内容是从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/site name="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

请帮帮我:)。

4 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,我的网址中显示/ 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);

答案 1 :(得分: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: Configuring Multiple Sites

根据此文档,URL将相对于“网站”网站标记中定义的“startItem”创建。

答案 2 :(得分:0)

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

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

可以找到包含搜索引擎优化的解决方案的完整描述here

答案 3 :(得分:0)

如果您的网站定义定义了targethostname,它也可能会有所帮助。