asp.net-mvc - asp.net mvc 多语言 url 通过更改 url 重定向

标签 asp.net-mvc model-view-controller seo multilingual

我正在处理多语言 Asp.Net MVC 项目。 默认语言为土耳其语,备用语言为英语。 我需要使 url seo 友好。例如,一些网站的 url 是这样的;

首页/关于:

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

主页/联系方式:

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

首页/常见问题:

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

有些页面是这样的。我还为这些页面提供了土耳其语和英语 seo 友好的 url。

我注册路线:

    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 }
    );

我还有一个 Home/ChangeLanguage 方法,它通过给定的文化名称 (tr/en) 设置线程的文化 用户可以通过单击按钮更改语言

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

初始网址:www.example.com/hakkinda 用户将语言更改为英文后,url 应重定向到 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"/>

我需要将这些链接标签添加到站点布局,并且它必须与当前 url 匹配。

您能否就我如何实现这些提供建议?

最佳答案

您可以创建一个 ActionFilter,它会根据每个请求检查发送到服务器的文化(通过 cookie 完成?),然后让它在每个请求上根据单独的字典查找 Controller 和操作,尝试匹配对面的本地化 Controller 或 Action,如果它匹配(即你当前导航到/about 但你的土耳其语,它将匹配/about 为英语,然后执行重定向到/hakkinda

关于asp.net-mvc - asp.net mvc 多语言 url 通过更改 url 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32596271/

相关文章:

c# - 为什么 Entity Framework .ToList() with .Include 非常慢,我怎样才能加快速度?

jquery - 显示错误/警告的最佳方法是在MVC中使其显示或传递自定义属性?

c++ - 用 MFC 替换控制台应用程序界面

javascript - 搜索页面的客户端和服务器端(ajax)渲染之间的区别,涉及 SEO

seo - img alt-attribute 是否与 h1 中的普通文本具有相同的相关性?

drupal-7 - 如何在drupal中设置taxonomy terms的meta标签,在description meta标签中显示相关节点的title

jquery - 如何在 jQuery 中从 MVC View Foreach 使用 OnClick 函数

asp.net-mvc - AutoMapper - MapFrom 给我以下错误 : expression tree cannot contain assignment operator

ios - 传递 NSManagedObject

java - 有没有Android MVC框架?