2014-02-24 16 views
0

如何實現解決方案,其中語言切換器不會包含會話變量或URL中的參數xyz.com/{language}(我現在有這種方法)。如何實現subdomians的語言切換器MVC4

只是en.XYZ.com/Account/Login或例如de.XYZ.com/SomeController/SomeAction(子域切換語言變量 - 這是更友好的搜索引擎優化)

如何實現的呢?

回答

0

你有什麼理由爲什麼使用會話變量?更常見的解決方案是在路線中包含語言代碼,即blah.com/en/info或blah.com/jp/info(英文和日文)

如果您在網站上的每一頁上都可以這樣做包含每種語言的鏈接。如果您正在編寫一個可公開訪問的網站,這也將使Google更容易爲您的所有內容建立索引。

本文解釋瞭如何在域中包含該語言,即。 en.blah.com或jp.blah.com:http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx

已更新:下面是一個在URL路由中包含語言代碼的簡單示例。

更改默認路由包括語言參數:

routes.MapRoute(
"Default", 
"{language}/{controller}/{action}/{id}", 
new { language = "en", controller = "Home", action = "Index", id = "" } 
); 
Add links for each language to your masterpage: 

<li>@Html.ActionLink(
    "Spanish", 
    ViewContext.RouteData.Values["action"].ToString(), 
    new { language = "es" })</li> 

這些將作爲鏈接呈現給您所在的頁面 - 唯一的語言改變。