4

我正在创建一个支持多种语言的网站。

我还想本地化 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

4

1 回答 1

3

您应该使用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

于 2012-08-30T12:48:01.233 回答