У меня сейчас проблема с перезаписью 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. Пожалуйста, помогите мне достичь перезапись .