我正在创建一个支持多种语言的网站。
我还想本地化 URL,以便它可以像这样工作:
- www.domain.com/en/contact
- www.domain.com/de/kontakt
为了实现这一点,我决定为每种语言使用不同的控制器。
我还添加了将访问者首选语言存储在 cookie 中的代码。
如果同一用户然后访问www.domain.com我希望代码检查该 cookie,然后将访问者重定向到具有适当语言的索引页面。
为了实现这一点,我在 global.asax 中有这个代码作为路线
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "en", action = "LanguageRedirect", id = UrlParameter.Optional }
然后在en控制器中有LanguageRedirect操作方法:
public ActionResult LanguageRedirect()
{
string cultureName="";
HttpCookie cultureCookie = Request.Cookies["_culture"];
if (cultureCookie != null)
{
cultureName = cultureCookie.Value;
cultureName = cultureName.Substring(0, 2);
}
// Some custom code that checks valid languages
if (!CultureHelper.isValidCulture(cultureName))
cultureName = "en";
return RedirectToAction("Index", cultureName);
}
我不确定关于 SEO 的适当重定向方法应该是什么?我应该只使用RedirectToAction
还是应该使用RedirectToActionPermanent
?