『QQ:1353814576』

C# .NET 5网站实现http访问301永久重定向https 以及顶级域名301重定向www


.NET 5 网站项目设置网站自动重定向301永久https 以及顶级域名定向www二级域名

C# .NET 5网站实现http访问301永久重定向https 以及顶级域名301重定向www

目前是本站所用到的域名和https定向代码,代码业务逻辑:http协议域名访问代码自动301重定向到https,访问顶级域名 yuantk.com重定向到 www.yuantk.com

主要作用是为了做网站优化 域名权重集中 具体有哪些好处可以自行百度资料

  1. 直接Nuget搜索引用 Microsoft.AspNetCore.Rewrite 添加引用即可
  2. 创建用到的自定义实体类

代码片段1

public class RedirectToWwwRule : IRule
    {
        public virtual void ApplyRule(RewriteContext context)
        {
            var req = context.HttpContext.Request;
            if (req.Host.Host.Equals("localhost", StringComparison.OrdinalIgnoreCase))
            {
                context.Result = RuleResult.ContinueRules;
                return;
            }

            if (req.Host.Value.StartsWith("www.", StringComparison.OrdinalIgnoreCase))
            {
                context.Result = RuleResult.ContinueRules;
                return;
            }

            var wwwHost = new HostString($"www.{req.Host.Value}");
            var newUrl = UriHelper.BuildAbsolute("https", wwwHost, req.PathBase, req.Path, req.QueryString);
            var response = context.HttpContext.Response;
            response.StatusCode = 301;
            response.Headers[HeaderNames.Location] = newUrl;
            context.Result = RuleResult.EndResponse;
        }
    }

代码片段2

   public static class RewriteOptionsExtensions
    {
        public static RewriteOptions AddRedirectToWwwWithHttps(this RewriteOptions options)
        {
            options.Rules.Add(new RedirectToWwwRule());
            return options;
        }
    }
  1. Startup里Configure方法里 添加代码

代码片段3

#region https重定向 以及顶级域名重定向www
            var options = new RewriteOptions();
            options.AddRedirectToWwwWithHttps();
            options.AddRedirectToHttps(301);
            app.UseRewriter(options);
#endregion

然后就可以发布项目到服务器测试看看了