我正在处理多语言 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/