隨着移動端的流行,愈來愈的網站,除了提供PC網頁以外,也提供了移動端的H5頁面,手機在訪問www.xxx.com的時候,能自動跳轉到mobile.xxx.com。網上不少在實現時也能使用JS直接進行跳轉,除了JS以外,你還能夠使用MVC的後端代碼直接實現後端
HttpContext.Current.Request.Browser.IsMobileDevice
在首頁訪問Controller代碼最前面直接增長核心代碼進行判斷ide
public ActionResult Index() { if (IsMobile()) { return Redirect("mobile.xxx.com"); } return View(); } public static bool IsMobile() { if (System.Web.HttpContext.Current.Request.Browser.IsMobileDevice) return true; return false; }
繼承AuthorizeAttribute,增長自定義Attribute網站
public class RedirectMobileDevicesToMobileAreaAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext) { RouteData rData = httpContext.Request.RequestContext.RouteData; //判斷,若是是頁面手工點擊的【電腦版】,則不進行跳轉 string customChange = (rData.Values["id"] ?? "").ToString(); if (!string.IsNullOrWhiteSpace(customChange)) { return true; } if (!httpContext.Session.IsNewSession) return true; if (!httpContext.Request.Browser.IsMobileDevice) return true; if (Regex.IsMatch(httpContext.Request.Url.PathAndQuery, "/Mobile($|/)")) return true; return false; } protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { var redirectionRouteValues = GetRedirectionRouteValues(filterContext.RequestContext); filterContext.Result = new RedirectToRouteResult(redirectionRouteValues); } protected virtual RouteValueDictionary GetRedirectionRouteValues(RequestContext requestContext) { return new RouteValueDictionary(new { area = "Mobile", controller = requestContext.RouteData.Values["controller"], action = requestContext.RouteData.Values["action"] }); } }
在須要跳轉的地方增長spa
[RedirectMobileDevicesToMobileArea]
[RedirectMobileDevicesToMobileArea] public ActionResult Index() { //if (IsMobile()) //{ // return Redirect("mobile.xxx.com"); //} return View(); }