C# .NET 5网站实现http访问301永久重定向https 以及顶级域名301重定向www
.NET 5 网站项目设置网站自动重定向301永久https 以及顶级域名定向www二级域名
目前是本站所用到的域名和https定向代码,代码业务逻辑:http协议域名访问代码自动301重定向到https,访问顶级域名 yuantk.com重定向到 www.yuantk.com
主要作用是为了做网站优化 域名权重集中 具体有哪些好处可以自行百度资料
- 直接Nuget搜索引用 Microsoft.AspNetCore.Rewrite 添加引用即可
- 创建用到的自定义实体类
代码片段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;
}
}
- Startup里Configure方法里 添加代码
代码片段3
#region https重定向 以及顶级域名重定向www
var options = new RewriteOptions();
options.AddRedirectToWwwWithHttps();
options.AddRedirectToHttps(301);
app.UseRewriter(options);
#endregion
然后就可以发布项目到服务器测试看看了