我正在尝试将URL重写中间件合并到我的.Net Core
应用中,出于某种原因,在尝试定义重定向正则表达式规则时,它会进入无限循环。
我正在使用带有react-router(客户端)路由的.NET Core 1.1
和React.JS
应用。基本上我希望在root之外输入或刷新任何明确的url只是重定向到root。给我一个无限循环的规则是:
app.UseRewriter(new RewriteOptions()
.AddRedirect("(.*)", "/")
);
根据我的理解,重写器已经考虑了基本域,因此我不必担心检查(^http://localhost:8080)
之类的内容。我相当确定我上面的简单正则表达式应该可行。
任何帮助表示赞赏。那些不熟悉的人url rewriting package is here。
答案 0 :(得分:0)
你的正则表达式的问题是它甚至匹配根URL:
var str = "/";
Console.WriteLine($"Output: {Regex.Match(str, "(.*)")}");
>>> Output: /
因此,您需要将*
替换为+
,从而排除您的根,因此/
后必须至少有一个字符:
app.UseRewriter(new RewriteOptions()
.AddRedirect("(.+)", "/")
);