【发布时间】:2019-01-29 20:46:28
【问题描述】:
在 ASP.NET Core Razor 页面中,如何将路由添加到所有页面,例如用于扩展的“.html”。
示例: /home 变成 /home.html
【问题讨论】:
标签: c# razor asp.net-core .net-core razor-pages
在 ASP.NET Core Razor 页面中,如何将路由添加到所有页面,例如用于扩展的“.html”。
示例: /home 变成 /home.html
【问题讨论】:
标签: c# razor asp.net-core .net-core razor-pages
使用URL重写中间件,试试如下代码:
1.在配置中
app.UseRewriter(new RewriteOptions()
.Add(RewriteRules.RedirectRequests)
.Add(RewriteRules.ReWriteRequests)
);
2.自定义一个包含RedirectRequests和ReWriteRequests的类
public class RewriteRules
{
public static void RedirectRequests(RewriteContext context)
{
var request = context.HttpContext.Request;
if (request.Path.Value.EndsWith("/", StringComparison.OrdinalIgnoreCase))
{
context.HttpContext.Response.Redirect("/Home.html");
}
else if(!request.Path.Value.EndsWith(".html", StringComparison.OrdinalIgnoreCase))
{
context.HttpContext.Response.Redirect($"{ request.Path.Value }.html");
}
}
public static void ReWriteRequests(RewriteContext context)
{
var request = context.HttpContext.Request;
if (request.Path.Value.EndsWith(".html", StringComparison.OrdinalIgnoreCase))
{
context.HttpContext.Request.Path = context.HttpContext.Request.Path.Value.Replace(".html","");
}
}
}
【讨论】: