複数の言語をサポートする 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
ですか?