2015-09-15 67 views
1

我正在开发一个多语种Asp.Net MVC项目。 默认语言是土耳其语,其他语言是英语。 我需要使网站友好。例如网站的一些网址就像;asp.net mvc多国语言网址通过更改url重定向

首页/公司:

  • www.example.com/hakkinda
  • www.example.com/about

首页/联系方式:

  • www.example .com/iletisim
  • www.example.com/contact

首页/ FAQ:

  • www.example.com/sikca-sorulan-sorular
  • www.example.com/frequently-asked-questions

有一些网页喜欢这个。我也有土耳其语和英语seo友好的网页。

我注册路线:

routes.MapRoute(
     name: "hakkinda", 
     url: "hakkinda", 
     defaults: new { controller = "Home", action = "About"} 
    ); 

    routes.MapRoute(
     name: "about", 
     url: "about", 
     defaults: new { controller = "Home", action = "About"} 
    ); 

    routes.MapRoute(
     name: "iletisim", 
     url: "iletisim", 
     defaults: new { controller = "Home", action = "Contact"} 
    ); 

    routes.MapRoute(
     name: "contact", 
     url: "contact", 
     defaults: new { controller = "Home", action = "Contact"} 
    ); 

    routes.MapRoute(
     name: "sss", 
     url: "sikca-sorulan-sorular", 
     defaults: new { controller = "Home", action = "Faq"} 
    ); 

    routes.MapRoute(
     name: "faq", 
     url: "frequently-asked-questions", 
     defaults: new { controller = "Home", action = "Faq"} 
    ); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", 
     action = "Index", id = UrlParameter.Optional } 
    ); 

我也有一个主页/ ChangeLanguage方法,它通过特定的文化名设置线程的文化(TR/EN) 用户可以通过点击一个按钮

更改语言我的第一个问题是我需要在用户更改语言时自动更改网址。

初始URL:www.example.com/hakkinda 用户后改变语言为英文网址应该重定向到www.example.com/about 再次,如果用户更改语言回土耳其应该被重定向到www.example .com/hakkinda 这必须适用于所有页面。

我的第二个问题是SEO优化,我需要下面的标签添加到所有页面,以说通过语言机器人的替代网页

<link rel="alternate" hreflang="tr" href="http://www.example.com/hakkinda"/> 
<link rel="alternate" hreflang="en" href="http://www.example.com/about"/> 

我需要这些链接的标签添加到网站的布局和它必须与当前网址匹配。

你能否给我建议我可以做到这些?

+0

你找到了一个很好的解决方案? – daniel

回答

0

你可以创建一个ActionFilter,它会给每个请求检查发送到服务器的文化(通过cookie完成?),然后在每个请求上查找控制器和针对单独字典的操作,尝试匹配oposite本地化无论是在控制器或行动,如果它击中匹配(即你目前导航/约,但你的土耳其语,它会匹配/约作为英语,然后执行重定向到/ hakkinda