gpt4 book ai didi

url-rewriting - ASP.NET Core 1.1 Url 重写 - www 到非 www

转载 作者:行者123 更新时间:2023-12-04 05:58:42 24 4
gpt4 key购买 nike

这是我与 ASP.NET Core 1.1 Url Rewriting 中间件一起使用以从 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" }
);
});
}

最佳答案

问题是 .AddRedirect 和 .AddRewrite 只查看 URL 的路径/查询字符串。所以你的正则表达式是正确的,但是该方法只查看路径/查询,所以它永远不会看到 www。此行为是大多数重写器的标准行为,例如 Apache mod_rewrite 和 IIS UrlRewrite。但是,这个用例应该很容易得到支持,我们很快就会研究它!

现在,为了获得预期的行为,您可以创建这样的自定义规则。注意我现在无法测试代码,但总体思路应该是正确的。

        app.UseRewriter(new RewriteOptions().Add(ctx =>
{
// checking if the hostName has www. at the beginning
var req = ctx.HttpContext.Request;
var hostName = req.Host;
if (hostName.ToString().StartsWith("www."))
{
// Strip off www.
var newHostName = hostName.ToString().Substring(4);

// Creating new url
var newUrl = new StringBuilder()
.Append(req.Scheme)
.Append(newHostName)
.Append(req.PathBase)
.Append(req.Path)
.Append(req.QueryString)
.ToString();

// Modify Http Response
var response = ctx.HttpContext.Response;
response.Headers[HeaderNames.Location] = newUrl;
response.StatusCode = 301;
ctx.Result = RuleResult.EndResponse;
}
}));

关于url-rewriting - ASP.NET Core 1.1 Url 重写 - www 到非 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com