URLRewrite Rule NetCore2.0 Удалить WWW - PullRequest
       0

URLRewrite Rule NetCore2.0 Удалить WWW

0 голосов
/ 21 сентября 2018

Цель: попытаться удалить www.от URL (например, http://www.myurl.com/r/reddit/other до http://myurl.com/r/reddit/other)

Что сломано? Перезапись URL не работает, чтобы перенаправить его на сайт без www?

Что происходит? Ничего не происходитне работает, компилируется нормально, но URL-адрес www зависает до истечения времени ожидания соединения и не перенаправляет, поскольку код собирается это сделать

Это мой код. Я не уверен, что происходит, но спецификации для этого приложения:

Net Core 2.0 со средой выполнения Net core 2.0.9

Правило

 public class WWWRule : IRule
{
    public void ApplyRule(RewriteContext context)
    {
        HttpRequest request = context.HttpContext.Request;
        if (request.Host.Value.StartsWith("www.", StringComparison.OrdinalIgnoreCase))
        {
            HttpResponse response = context.HttpContext.Response;
            var newhost = request.Host.Value.Substring(4);
            string redirectUrl = $"{request.Scheme}://{newhost}{request.Path}{request.QueryString}";
            response.Headers[HeaderNames.Location] = redirectUrl;
            response.StatusCode = StatusCodes.Status301MovedPermanently;
            context.Result = RuleResult.EndResponse;
        }
    }

}

Startup.cs

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        RewriteOptions rewriteOptions = new RewriteOptions().Add(new WWWRule());
        app.UseRewriter(rewriteOptions);
  }

См. Nuget lib enter image description here

1 Ответ

0 голосов
/ 24 сентября 2018

Разобрался.

Не забудьте зарегистрировать поддомен в записях DNS.(CNAME, www, yourServerName)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...