重定向会增加http请求的次数,会影响到整个网站的性能,但是必要的重定向又可以提高用户体验,所以我们需要在性能和用户体验之间去权衡,达到最好的目的:下面讲讲php实现301永久重定向和302临时重定向以及怎么去避免重定向:
一、对于许多站点而言,以本站域名baidu.com为例:用户在浏览器中输入网址http://www.baidu.com/或者http://www.baidu.com/index.php,实际上访问的都是本站的首页;用户在浏览器中输入网址http://www.baidu.com/或者http://baidu.com/,访问的依然都是本站的首页。
此外,在某些情况下,我们可能需要将站点中的某个文件移动到一个新的位置或更改该文件的名称。此时,用户可能仍然会输入以前收藏的网址来访问该网页文件,因此,我们需要尽量保证以前的网址和新的网址都能够访问到最新的网页内容。
但是,对于搜索引擎而言,两个路径不同的网址,又没有其他特别的说明,则会被搜索引擎认为这是两个独立的页面,从而进行分别收录。不过,由于两个页面的内容雷同,搜索引擎可能会对上述网址进行降权处理,从而影响SEO的效果。
为了避免给网站的SEO造成不良影响,也为了给用户带来良好的访问体验,我们应该采用一些特别说明来告诉搜索引擎——「它们实际上是同一个页面」。当然,不仅仅是为了SEO,对于一个优秀的站点而言,每一个网页也都应该对应一个唯一的网址。
在这里,我们就需要使用「特别说明」来告诉浏览器或者搜索引擎,「旧的网址和新的网址实际上是同一个网页,建议浏览器或搜索引擎使用新的网址来访问该网页」,这里的「特别说明」就是HTTP重定向。HTTP重定向,简言之,就是当用户浏览器或搜索引擎访问某个旧的网址时,服务器告诉浏览器或搜索引擎,「该网页已经搬家了,新家的地址是……,请使用新地址来访问该网页」。例如,当用户访问网址http://www.baidu.com/index.php时,服务器将告诉浏览器,这个页面应该重定向到http://www.baidu.com/。此时,浏览器或者搜索引擎就会自动跳转到新的网址从而访问网页内容。
HTTP重定向又分为永久重定向(HTTP状态码为301)和临时重定向(HTTP状态码为302)。永久重定向就表示该网址已经搬到到一个永久居住的「新家」,临时重定向就表示该网址搬迁到了一个临时居住的「公寓」。下面,我们就使用php来分别实现302临时重定向和301永久重定向。
二、怎么取避免重定向:
1、在定义链接地址的href属性的时候,尽量使用最完整的、直接的地址。例如
使用www.cnblogs.com而不是cnblogs.com
使用cn.bing.com而不是bing.com
使用www.google.com.hk而不是google.com
使用www.mysite.com/products/而不是www.mysite.com/products
2、在使用Response.Redirect的时候,设置第二个参数为false
考虑是否可用Server.Execute代替
考虑Respone.RedirectPermanent
3、如果涉及到从测试环境到生产环境的迁移,建议通过DNS中的CNAME的机制来定义别名,而不是强制地重定向来实现