Я бы хотел, чтобы культура была доступна на URL домашней страницы. Для всех моих страниц у меня это хорошо отображалось как: "http://www.mywebsite.com/fr-be/about/" Но если зайти на сайт в первый раз на главной странице, URL-адрес "http://www.mywebsite.com/", я бы хотел бы иметь "http://www.mywebsite.com/fr-be/".
Дайте мне знать, если это не хорошо для индексации Google.
Спасибо.
Мои маршруты :
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.IgnoreRoute("robots.txt");
routes.LowercaseUrls = true;
routes.AppendTrailingSlash = true;
routes.MapRoute(
name: "Localization", // Route name
url: "{lang}/{controller}/{action}/{id}", // URL with parameters
new { controller = "Static", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Static", action = "Index", id = UrlParameter.Optional }
);
}
}
BaseController
public class BaseController : Controller
{
// GET: Base
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
if (requestContext.RouteData.Values["lang"] != null &&
!string.IsNullOrWhiteSpace(requestContext.RouteData.Values["lang"].ToString()))
{
// modification de la culture dans les données de la route
var lang = requestContext.RouteData.Values["lang"].ToString();
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(lang);
}
else
{
// chargement de la culture depuis un cookie
var cookie = requestContext.HttpContext.Request.Cookies["EM6Worldwide.CurrentUICulture"];
var langHeader = string.Empty;
if (cookie != null)
{
// modification de la culture avec la valeur dans le cookie
langHeader = cookie.Value;
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(langHeader);
}
else
{
// utilisation de la langue par défaut du navigateur si la culture n'est pas spécifiée
langHeader = requestContext.HttpContext.Request.UserLanguages[0];
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(langHeader);
}
// modification de la culture dans les données de la route
requestContext.RouteData.Values["lang"] = langHeader;
}
// sauvegarde de la culture dans un cookie
HttpCookie _cookie = new HttpCookie("EM6Worldwide.CurrentUICulture", Thread.CurrentThread.CurrentUICulture.Name);
_cookie.Expires = DateTime.Now.AddYears(1);
requestContext.HttpContext.Response.SetCookie(_cookie);
base.Initialize(requestContext);
}
}
StaticController
public class StaticController : BaseController
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Services()
{
ViewBag.Message = "Your services page.";
return View();
}
}