下面是我用於ASP.NET Core 1.1 Url重寫中間件從www重定向的核心。非網址:ASP.NET Core 1.1網址重寫 - 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#字符串,它轉換爲\爲正則表達式。 –