2016-04-23 167 views
1

我正在處理301 url重定向,我曾嘗試過一些Sitecore重定向模塊,但我正在尋找推薦的方法,實際上我有要求從網址中刪除語言代碼「en」保留它爲其他語言,我做了鏈接管理器,例如當用戶點擊關於我們的鏈接,它會帶他到沒有這樣的語言代碼的頁面:Sitecore重定向網址

www.mywebsite.com/about -us

但我仍然可以像這樣手動訪問網址:

www.mywebstie.com/en/about-us

所以現在我有兩個URL相同的頁面。這不建議用於搜索引擎優化。最後我只想爲每個頁面創建一個url。

另一個例子也,關於我們可以用連字符訪問

www.mywebstie.com/about-us

與空間

www.mywebstie.com /關於我們

什麼是s的最佳方法這個問題呢?

回答

2

使用Canonical是一個選項,<link id="Canonical" rel="canonical" href="/about-us/" />然後你SEO的問題消失了。

或者只是創造重定向在你的母版出頭這樣的:

string goodUrl = LinkManager.GetItemUrl(Sitecore.Context.Item); 
if (goodUrl != Request.Path) 
{ 
    Response.RedirectPermanent(goodUrl); 
} 

除了你已經提到的變型,這也將工作/about-us.aspx和/about-us.ashx。其他選項是,您當然也可以在httpRequestBegin管道ItemResolver中解決這個問題。

1

有廣泛的選擇,你可以如何實現所需的行爲:

  1. 你可以配置你的Sitecore的網站

    配置LinkManager(Sitecore.config):在默認LinkProvider更改設置。從網址中排除languageEmbedding =「never」languageLocation =「queryString」。

    配置encodeNameReplacements(Sitecore.config): 「在」 發現添加此規則

    <替換模式= = 「 」replaceWith =「 - 」 >

    使用破折號代替空格。

  2. 使用canonical links

  3. your own LinkProvider你的目的

  4. 安裝和配置IIS擴展,可以重定向您的要求。

    例如:URL RewriteIonic's Isapi Rewrite FilterISAPI_Rewrite但是,如果您打算在CM實例上使用此模塊,則需要be careful

我建議你嘗試配置您的Sitecore的LinkManager提供商,encodeNameReplacement規則(在列表項1),並添加規範鏈接(列表中的第2項)。看起來它對你的任務來說已經足夠了。

如果配置和規範鏈接不夠,可以擴展默認的Sitecore行爲(列表中的項目3)或者安裝和配置IIS模塊(列表中的項目4)。

+0

我已經實現了自定義鏈接提供程序來解決語言問題,如果語言是英語,並且這很好,當我點擊任何英語語言鏈接時,它將把用戶帶到沒有「 EN「,但如果用戶手動導航到帶有語言代碼的網址,則該網址將起作用。相反,它應該重定向到原始網址。這是主要問題。在這種情況下我不能使用IIS URL重寫器,因爲sitecore語言解析器在iis處理後即將到來。 –

+0

用短劃線替換空格的問題相同。實際上我已經在項目保存/更新上創建了事件以用「 - 」替換項目名稱中的空間,但是如果您的顯示名稱帶有空格,並且您使用顯示名稱導航項目URL,它將起作用。所以關於我們和「關於我們」這兩個將在URL –

+0

1)如果所有的鏈接將與配置的鏈接管理器和編碼名稱替換形成,然後搜索引擎爬蟲將不知道其他鏈接類型。 2)如果你想精確302重定向,那麼你應該將你自己的處理器添加到管道中,並在URL匹配一些規則時重定向用戶。 – Anton