4

複数の言語をサポートする Web サイトを作成しています。

また、次のように機能するように 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(301)の代わりに(302)を使用する必要がありますRedirectToActionPermanent

リソースに新しい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 に答える