我在StartUp.cs
中已经配置了
app.UseRewriter(new RewriteOptions()
.AddRedirect(@"r?postId=(\d+)&index=(\d+)", "blogpost/$1?page=$2", (int) HttpStatusCode.Redirect)
);
为什么访问了地址:http://localhost:5000/r?postId=1&index=2
仍然不跳转呢?
可以通过实现一个IRule
接口,自定义重定向规则,然后通过RewriteContext
拿到你想要的路由参数。
public class RedirectDefaultRequest : IRule
{
public void ApplyRule(RewriteContext context)
{
var request = context.HttpContext.Request;
if(....)
{
var response = context.HttpContext.Response;
response.StatusCode = StatusCodes.Status301MovedPermanently;
context.Result = RuleResult.EndResponse;
response.Headers[HeaderNames.Location] = '新地址'
}
}
}
最后不要忘记在Startup.cs
中注册一下。
var options = new RewriteOptions().Add(new RedirectDefaultRequest());
app.UseRewriter(options);
?
需要转义