【发布时间】:2021-01-05 19:26:25
【问题描述】:
var rewriteOptions = new RewriteOptions();;
rewriteOptions.AddRewrite("\\/blog\\/[0-9]+", "/blog.html", true);
app.UseRewriter(rewriteOptions);
我添加了这个中间件来进行 url 重写,使 /blog/ 指向 html 页面(此页面中的 JS 将提取整数然后对 JSON 进行适当的请求以获取内容),但重定向不是发生(应用程序的行为就像规则不存在一样)。有什么问题?
我在重写中间件之前和之后都添加了这个:
app.Use(async (context, next) =>
{
Console.WriteLine(context.Request.Path + "\n");
await next.Invoke();
});
所以我知道之前的路径是我所期望的,并且之后路径不会被重写。
当我添加另一个规则时,第一个规则开始起作用。经过进一步测试,似乎我添加的每条规则(最后一条除外)都按预期工作。
之后,我把前面提到的重写规则改成了这样:
rewriteOptions.AddRewrite("\\/blog-[0-9]+", "/blog.html", true);
现在它被破坏了(应用程序的行为就像规则不存在一样),即使在它之后有另一个规则。
我错过了什么?
【问题讨论】:
标签: c# asp.net-core url-rewriting asp.net-core-middleware