Regex .net核心重写模块无限循环中重定向的正则表达式
我试图在我的Regex .net核心重写模块无限循环中重定向的正则表达式,regex,reactjs,url-rewriting,asp.net-core,.net-core,Regex,Reactjs,Url Rewriting,Asp.net Core,.net Core,我试图在我的.netcore应用程序中加入URL重写中间件,由于某种原因,在试图定义重定向正则表达式规则时,它进入了一个无限循环 我正在使用.netcore1.1和带有React路由器(客户端)路由的React.JS应用程序。本质上,我希望在根目录之外输入或刷新的任何显式url只重定向到根目录。给我一个无限循环的规则是: app.UseRewriter(new RewriteOptions() .AddRedirect("(.*)", "/") ); 据我所知,重写器已经考虑了基本域,
.netcore
应用程序中加入URL重写中间件,由于某种原因,在试图定义重定向正则表达式规则时,它进入了一个无限循环
我正在使用.netcore1.1
和带有React路由器(客户端)路由的React.JS
应用程序。本质上,我希望在根目录之外输入或刷新的任何显式url只重定向到根目录。给我一个无限循环的规则是:
app.UseRewriter(new RewriteOptions()
.AddRedirect("(.*)", "/")
);
据我所知,重写器已经考虑了基本域,因此我不必担心检查类似(^http://localhost:8080)
。我相当肯定我上面的简单正则表达式会起作用
谢谢你的帮助。对于那些不熟悉它的人来说,最重要的是。正则表达式的问题是它甚至与根url匹配:
var str = "/";
Console.WriteLine($"Output: {Regex.Match(str, "(.*)")}");
>>> Output: /
因此,您需要将*
替换为+
,从而从中排除根目录,因此/
后面必须至少有一个字符:
app.UseRewriter(new RewriteOptions()
.AddRedirect("(.+)", "/")
);