다음은 ASP.NET Core 1.1 URL에서 사용하는 코어입니다. www에서 리디렉션하기 위해 미들웨어를 다시 작성합니다. www가 아닌 경우 :ASP.NET 코어 1.1 URL 재 작성 - www가 아닌 URL
var options = new RewriteOptions()
.AddRedirect("^(www\\.)(.*)$", "$2");
app.UseRewriter(options);
이며 어떤 이유로 작동하지 않습니다. 나는 정규식이 정확하다는 것을 안다. 여기 뭐가 잘못 됐니?
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseRequestLocalization(new RequestLocalizationOptions() { DefaultRequestCulture = new RequestCulture("ru-ru") });
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
// URL Rewriting
var options = new RewriteOptions()
//.AddRedirect(@"^(https?:\/\/)(www\.)(.*)$", "$1$3");
.AddRedirect("^(www\\.)(.*)$", "$2");
app.UseRewriter(options);
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{action=Index}/{id?}",
defaults: new { controller = "Home" }
);
});
}
정규식이 올바른 이유는 무엇입니까? "www \\"는 "www \ .example.com"과 같은 의미입니다. 그런데 [이 도구] (https://regex101.com/r/g7pU6F/1)가 도움이 될 수 있습니다. –
네, 맞습니다 -^(www \.) (. *) $, "도트"를 벗어나야 만합니다. – alvipeo
@ChristianGollhardt \\는 C# 문자열로, \는 정규식으로 변환됩니다. –