2013-01-15 71 views
2

我想縮短我的公司使用sitecore開發的網站的網址。我一直在關注Alex Shyba的博客文章here和Sitecore文檔here,但它似乎不起作用。我想縮短的是從localhost:8081/sitecore/Content/Sites/HeinzABCID/Dapur.aspxlocalhost:8081/Dapur.aspxsitecore縮短網址似乎並不工作

該網址是由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"在我的web.config部分下方。

<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"/> 

我沒有任何其他網站,只是默認(外殼,登錄,管理,服務,modules_shell和modules_website)。

這裏是我的網站的網站結構。

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

請幫我:)

+1

你確定自己的網站設置是否正確?當網站設置不正確並且您鏈接到不在您網站根目錄的項目時,可能會引發這些問題。 –

+1

正如Martijn所建議的那樣,從您的配置的部分發布「網站」元素。如果您使用的是補丁包含文件,請確保您使用Rocks或通過http:// /sitecore/admin/showconfig.aspx查看合併的配置文件 – jammykam

+0

@MartijnvanderPut和@jammykam我在我的web.config中添加了網站部分'。對不起,我以前忘了補充一點。 – didityedi

回答

0

使用正則表達式替換我成功地縮短了URL。我也可以設法在多個站點上使用它。

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

包含SEO的解決方案的完整說明可以在here找到。

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

根據這一文件,該網址將根據'網站'網站標籤中定義的'startItem'創建。

+0

經過長時間的反覆試驗後,它仍然無法工作。我已經發布了答案,因爲我使用其他方法而不是sitecore默認方法。 – didityedi

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); 
+0

我也嘗試了相同的時間,但仍顯示相同的錯誤。這就是爲什麼我最終使用正則表達式。 – didityedi

0

如果您的網站定義中定義了targethostname,它也可能有所幫助。