ここでは、ASP.NET Core 1.1 URLで使用するコアをミドルウェアを書き換えてwwwからリダイレクトします。非WWWへ: ASP.NET Core 1.1 URL書き換え - www以外のもの
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#文字列です。 –