Цель: попытаться удалить 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