時(shí)間:2023-02-09 09:18:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-09 09:18:01 來(lái)源:建站知識(shí)
之前寫(xiě)過(guò)一篇IIS通過(guò)URL重寫(xiě)將www的域名301到不帶www的域名和強(qiáng)制使用https訪問(wèn)網(wǎng)站的文章,突然想到,ASP.NET Core的還沒(méi)寫(xiě),今天補(bǔ)上吧。 public class NonWwwRule : IRule { public void ApplyRule(RewriteContext context) { } }
方法參數(shù)RewriteContext可從中獲取到當(dāng)前的請(qǐng)求路徑,以及HttpContext對(duì)象,便可以實(shí)現(xiàn)Redirect: public class NonWwwRule : IRule { public void ApplyRule(RewriteContext context) { var req = context.HttpContext.Request; var currentHost = req.Host; // 如果是本地調(diào)試的時(shí)候,不進(jìn)行重寫(xiě) if (currentHost.Host.Equals("127.0.0.1") || currentHost.Host.Equals("localhost", StringComparison.InvariantCultureIgnoreCase)) { context.Result = RuleResult.ContinueRules; return; } // 如果scheme是http或者域名是www.的,進(jìn)行301重定向到不帶www的并且是https的 if (req.Scheme.Equals("http") || currentHost.Host.Contains("www.")) { context.HttpContext.Response.Redirect("https://" + currentHost.Value.Replace("www.", string.Empty) + req.PathBase + req.Path + req.QueryString); context.Result = RuleResult.EndResponse; } } }
再為Rewriter的RewriteOptions寫(xiě)個(gè)擴(kuò)展方法,作用是將上面的規(guī)則添加到Rewriter中: public static class RewriteOptionsExtensions { public static RewriteOptions AddRedirectToNonWww(this RewriteOptions options) { options.Rules.Add(new NonWwwRule()); return options; } }
規(guī)則定義好以后,在Startup中進(jìn)行配置:app.UseHttpsRedirection().UseRewriter(new RewriteOptions().AddRedirectToNonWww());
現(xiàn)在,http://ASP.NET Core網(wǎng)站應(yīng)用的裸奔重寫(xiě)即實(shí)現(xiàn),相比IIS,其實(shí)簡(jiǎn)單太多了。關(guān)鍵詞:強(qiáng)制,使用,通過(guò)
客戶(hù)&案例
營(yíng)銷(xiāo)資訊
關(guān)于我們
客戶(hù)&案例
營(yíng)銷(xiāo)資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。