Reputation: 203
In ASP.NET Core Razor Pages how can I add routing to all pages for example ".html" for extension.
Example: / home to become /home.html
Upvotes: 1
Views: 300
Reputation: 12685
Use URL Rewriting Middleware, try the code as shown below:
1.In Configure
app.UseRewriter(new RewriteOptions()
.Add(RewriteRules.RedirectRequests)
.Add(RewriteRules.ReWriteRequests)
);
2.Custom a class containing RedirectRequests and 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","");
}
}
}
Upvotes: 1