正则表达式重定向.net核心重写模块无限循环

时间:2017-04-13 20:35:08

标签: regex reactjs url-rewriting asp.net-core .net-core

我正在尝试将URL重写中间件合并到我的.Net Core应用中,出于某种原因,在尝试定义重定向正则表达式规则时,它会进入无限循环。

我正在使用带有react-router(客户端)路由的.NET Core 1.1React.JS应用。基本上我希望在root之外输入或刷新任何明确的url只是重定向到root。给我一个无限循环的规则是:

app.UseRewriter(new RewriteOptions()
    .AddRedirect("(.*)", "/")
);

根据我的理解,重写器已经考虑了基本域,因此我不必担心检查(^http://localhost:8080)之类的内容。我相当确定我上面的简单正则表达式应该可行。

任何帮助表示赞赏。那些不熟悉的人url rewriting package is here

1 个答案:

答案 0 :(得分:0)

你的正则表达式的问题是它甚至匹配根URL:

var str = "/";
Console.WriteLine($"Output: {Regex.Match(str, "(.*)")}");

>>> Output: /

因此,您需要将*替换为+,从而排除您的根,因此/后必须至少有一个字符:

app.UseRewriter(new RewriteOptions()
    .AddRedirect("(.+)", "/")
);