Использование URL Rewrite Middleware без изменения адреса в браузере - PullRequest
0 голосов
/ 13 февраля 2020

У меня сейчас проблема с перезаписью URL Middleware. Когда я переписываю URL, он меняет адрес в браузере на перенаправленный URL, но я хочу показать предоставленный URL в адресной строке, а не URL, на который он перенаправлен.

Текущий код, который я использую, таков:

    public class RedirectWwwRule : IRule
    {
        public int StatusCode { get; } = (int)HttpStatusCode.MovedPermanently;
        public bool ExcludeLocalhost { get; set; } = true;

        public void ApplyRule(RewriteContext context)
        {
            var request = context.HttpContext.Request;
            var host = request.Host;          
            string providedUrl = "", redirectUrl = "/";

            if (request.Path.Value.Length >= 2)
            {
                providedUrl = request.Path.Value.Substring(1, request.Path.Value.Length - 1);
                if (providedUrl.ToLower().Equals("home.html"))
                {
                    redirectUrl = string.Format("/{0}/{1}", "home", "index");
                }
                else if (providedUrl.ToLower().Equals("error.html"))
                {
                    redirectUrl = string.Format("/{0}/{1}", "home", "error");
                }
                else
                {
                    context.Result = RuleResult.ContinueRules;
                    return;
                }
            }
            else
            {
                context.Result = RuleResult.ContinueRules;
                return;
            }

            var response = context.HttpContext.Response;
            response.StatusCode = StatusCodes.Status301MovedPermanently;
            response.Headers[HeaderNames.Location] = newPath;
            context.Result = RuleResult.EndResponse;
            // Do not continue processing the request        
        }
    }

Я думаю, что этот код перенаправляет, а не переписывает URL. Пожалуйста, помогите мне достичь перезапись .

...