ASP.NET实现301重定向方法

所属分类: 网络编程 / ASP.NET 阅读数: 1403
收藏 0 赞 0 分享
<span style="font-family:'宋体';font-size:10.5pt;"></span> 

关于百度等搜索引擎对于是否带"www"前缀的域名的识别问题:即搜索引擎会将www.abc.com和abc.com识别为不同的两个域名,这样做的后果就是分散了对网站的关注度,不利于网站的宣传和推广。

仅仅是通过Response.Redirect方法来重定向该连接,虽然可以将连接进行重定向,但是无法解决搜索引擎的识别分散问题的;此问题可通过301重定向来进行解决,具体在ASP.NET中可通过如下方法来处理:

private void CheckTopDomainName(HttpContext context) 
     { 
       Uri url = context.Request.Url; 
       string host = url.Host.ToLower(); 
  
       int count = host.Split('.').Length; 
       bool doubleDomainName = host.EndsWith(".com.cn", StringComparison.CurrentCultureIgnoreCase) || 
         host.EndsWith(".net.cn", StringComparison.CurrentCultureIgnoreCase) || 
         host.EndsWith(".gov.cn", StringComparison.CurrentCultureIgnoreCase) || 
         host.EndsWith(".org.cn", StringComparison.CurrentCultureIgnoreCase); 
  
       if (count == 2 || (count == 3 && doubleDomainName)) 
       { 
         context.Response.Status = "301 Moved Permanently"; 
         // 避免替换掉后面的参数中的域名 
         context.Response.AddHeader( 
           "Location",  
           url.AbsoluteUri.Replace( 
             string.Format("http://{0}", host),  
             string.Format("http://www.{0}", host) 
             ) 
           ); 
       } 

更多关于ASP.NET301实现的方法实例:

因为IIS设置301需要在服务器中配置很麻烦,所以ME选择了在程序中实现。
程序中实现有个缺点就是执行效率没有在IIS服务器中速度快。

当然了,这里说的只是适合动态网站的,如果都是.html静态文件就飘过吧!

好了还是直接上代码吧:

网页首页文件index.aspx后台代码

//判断是否是www.开头,如果不是301调整到www.域名 
if (!System.Web.HttpContext.Current.Request.Url.ToString().StartsWith("http://www.")) 
{ 
   //301 重定向到 /目录下           
   HttpContext.Current.Response.StatusCode = 301; 
   HttpContext.Current.Response.Status = "301 Moved Permanently"; 
   HttpContext.Current.Response.AddHeader("Location", "http://www.qinquan.org/"); 
   HttpContext.Current.Response.End(); 
}

这里因为是我的独立站点,所以直接写www.了。如果是二级域名就需要根据需求自己修过了。

栏目页/内容页代码:

//如果url结尾不是以/符号结尾的,同样301到末尾增加/符号。

if (!System.Web.HttpContext.Current.Request.RawUrl.EndsWith("/")) 
{ 
     //301 重定向到 /目录下 
     HttpContext.Current.Response.StatusCode = 301; 
     HttpContext.Current.Response.Status = "301 Moved Permanently"; 
     HttpContext.Current.Response.AddHeader("Location", System.Web.HttpContext.Current.Request.RawUrl + "/");        
     HttpContext.Current.Response.End(); 
}

更多精彩内容其他人还在看

ADO.NET实用经验汇总

这篇文章主要介绍了ADO.NET实用经验汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

DataReader不能使用using的详细示例

这篇文章主要介绍了DataReader不能使用using的详细示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

asp.net MVC 在Controller控制器中实现验证码输出功能

这篇文章主要介绍了asp.net MVC 在Controller控制器中实现验证码输出功能,本文给大家介绍非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

.NET连接池的问题详解

这篇文章主要介绍了.NET连接池的问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

ASP.NET Core 3框架揭秘之 异步线程无法使用IServiceProvider问题

这篇文章主要介绍了ASP.NET Core 3框架揭秘之异步线程无法使用IServiceProvider问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

.Net Core3.0 WEB API中使用FluentValidation验证(批量注入)

这篇文章主要介绍了.Net Core3.0 WEB API中使用FluentValidation验证(批量注入),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

.NET Core3.1发布(翻译)

这篇文章主要介绍了.NET Core3.1发布(翻译),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

ASP.NET Core3.X 终端中间件转换为端点路由运行详解

这篇文章主要介绍了ASP.NET Core3.X 终端中间件转换为端点路由运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

浅谈ASP.NET Core的几种托管方式

这篇文章主要介绍了浅谈ASP.NET Core的几种托管方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

ASP.NET Core中快速构建PDF文档的步骤分享第1/2页

这篇文章主要给大家介绍了关于ASP.NET Core中快速构建PDF文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多