我正在创建一个支持多种语言的网站。
我还想本地化URL,这样它就会像这样工作:
- www.domain.com/en/contact
- www.domain.com/de/contakt
为了实现这一点,我决定为每种语言使用不同的控制器。
我还在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-控制器中有LanguageDirect操作方法:
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
?
您应该使用RedirectToAction
(302)而不是RedirectToActionPermanent
(301)。
如果资源已经被分配了新的URI,并且原始URI不再有效,那么基本上应该301重定向。
参考:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
https://webmasters.stackexchange.com/questions/26876/301-redirects-for-regional-variants-of-a-homepage