【发布时间】:2017-05-03 11:48:46
【问题描述】:
这是我使用 ASP.NET Core 1.1 Url 重写中间件以从 www 重定向的核心。对非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”。顺便说一句 this tool 可以帮助你。
-
是的,这是正确的 - ^(www\.)(.*)$ ,我必须转义“点”
-
@ChristianGollhardt \\ 用于 C# 字符串,转换为 \ 用于正则表达式。
-
好吧,看起来很奇怪。根据this example,您做得对。也许我们需要以某种方式包含protokoll? msdn 示例是否适合您(删除尾部斜杠)?假设......核心在我的待办事项列表上。
-
它怎么不起作用 - 它只是被忽略了吗?你能粘贴你
Configure方法的所有相关部分吗?
标签: url-rewriting asp.net-core asp.net-core-mvc