В ASP.NET Core (MVC6) мы можем использовать пользовательский Middle Ware
для достижения этой цели.
Вот простой пример для ознакомления.
Сначала создайте класс Middle Ware
. Согласно вашему требованию, я создал его для вас, как показано ниже:
using ASPNETCore.Test;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ASPNETCore.Middleware
{
public class MyMiddleware
{
private RequestDelegate _nextDelegate;
private IServiceProvider _serviceProvider;
public MyMiddleware(RequestDelegate nextDelegate, IServiceProvider serviceProvider)
{
_nextDelegate = nextDelegate;
_serviceProvider = serviceProvider;
}
public async Task Invoke(HttpContext httpContext)
{
string requestURL = httpContext.Request.Path.ToString().ToLower();
//redirect domain/home/index and domain/home to domain
if (requestURL.Contains("/home/index")||requestURL.EndsWith("/home"))
{
httpContext.Response.Redirect("/");
}
// redirect domain/home/something to domain/something
else if (requestURL.Contains("/home/"))
{
Regex reg = new Regex("/home/(.+)");
Match match = reg.Match(requestURL);
string value = match.Groups[1].Value;
httpContext.Response.Redirect("/"+ value);
}else{
await _nextDelegate.Invoke(httpContext);
}
}
}
}
Тогда мы можем использовать его в Configure
методе в Startup
классе, как показано ниже:
Я проверил это, и это сработало. Надеюсь, это будет полезно.