Exemple #1
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var request = httpContext.Request;

            if (request.Path.ContainsUpper() || request.Url.Host.ContainsUpper())
            {
                var builder = new UriBuilder(request.Url)
                {
                    Path = request.Path.ToLowerInvariant(),
                    Host = request.Url.Host.ToLowerInvariant()
                };
                var destinationUrl = builder.Uri.ToString();
                var routeData      = routeUtilities.CreateRouteData(this);
                return(routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext));
            }
            return(null);
        }
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var request = httpContext.Request;
            //if (!request.Path.EndsWith("/"))
            //{
            //    var builder = new UriBuilder(request.Url)
            //    {
            //        Path = request.Path + "/"
            //    };
            //    var destinationUrl = builder.Uri.ToString();
            //    var routeData = routeUtilities.CreateRouteData(this);
            //    return routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext);
            //}

            string destinationUrl = string.Empty;

            // NOTE: It is more user friendly (although technically incorrect) to
            // remove the trailing slash than to add it. This also means less characters
            // to work with, so it is more efficient too.
            if (request.Path.Length > 1 && request.Path.EndsWith("/"))
            {
                var builder = new UriBuilder(request.Url)
                {
                    Path = request.Path.Substring(0, request.Path.Length - 1)
                };
                destinationUrl = builder.Uri.ToString();
            }
            else if (request.Path.Length == 0)
            {
                // Home page is a special case - always use a trailing slash
                var builder = new UriBuilder(request.Url)
                {
                    Path = "/"
                };
                destinationUrl = builder.Uri.ToString();
            }
            if (!string.IsNullOrEmpty(destinationUrl))
            {
                var routeData = routeUtilities.CreateRouteData(this);
                return(routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext));
            }
            return(null);
        }
Exemple #3
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            var tenant = appContext.CurrentTenant;
            var url    = httpContext.Request.Url;

            // Get the culture name
            var cultureName = contextUtilities.GetCultureNameFromUrl(url).ToLowerInvariant();

            if (this.IsDefaultUICulture(cultureName, tenant))
            {
                var request = httpContext.Request;
                var builder = new UriBuilder(request.Url)
                {
                    Path = request.Path.Substring(cultureName.Length + 1)
                };
                var destinationUrl = builder.Uri.ToString();
                var routeData      = routeUtilities.CreateRouteData(this);
                return(routeUtilities.RedirectPermanent(destinationUrl, routeData, httpContext));
            }
            return(null);
        }