重定向会增加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的机制来定义别名,而不是强制地重定向来实现

转载于:https://www.cnblogs.com/cdwp8/p/4074412.html

网站优化之尽量避免重定向(301/302)相关推荐

  1. php 303,HTTP 的重定向301,302,303,307(转)

    301 永久重定向,告诉客户端以后应从新地址访问. 302 作为HTTP1.0的标准,以前叫做Moved Temporarily ,现在叫Found. 现在使用只是为了兼容性的处理,包括PHP的默认L ...

  2. 【HTTP】http重定向301/302/303/307

    一.概述 重定向常常和请求转发放在一起讨论(前者是两次不相关的请求,后者是一次请求服务器端转发),然而本文并不讨论两者的区别,而是HTTP 1.0规范和HTTP 1.1规范中关于重定向的区别,以及实际 ...

  3. 301 302状态码【重定向】

    http状态码 1.301 302 区别: 开场自白:本人前端菜鸡一枚,经验缺少,没遇到过301 302只知道是重定向,有次被问到它俩的区别我懵逼了,查看一下大家的,自己记录一下,加深印象 重定向(R ...

  4. 重定向301和302区别详解(转)

    301和302是最常见的HTTP重定向代码. 301永久重定向 301重定向是指示链接的目标已永久将URL更改为不同的URL,例如,当seoexample更名为example时,他们将URL从seoe ...

  5. scrapy 解决Redirecting 301 302重定向问题

    在使用Scrapy框架中URl被重定向,总是遇到这类问题: DEBUG: Redirecting (301/302) to <GET https://XXXX refer https://XXX ...

  6. 详解重定向(HTTP状态码301/302/303/307/308)附案例

    关注 前端瓶子君,回复"交流" 加入我们一起学习,天天进步 今天打算好好把状态码301.302.303.307.308好好撸一遍,并会测试下一些例子. 状态码的解释 我们都知道重定 ...

  7. HTTP状态码(重定向/error 301/302)

    1. HTTP状态码 当浏览器访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接受并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的英文为HTTP status Code ...

  8. DNS解析记录中的CNAME与URL重定向(301/302)区别

    DNS解析记录中的CNAME与URL重定向(301/302)区别 CNAME解析:   CNAME 被称为规范名字.这种记录允许您将多个名字映射到同一台计算机. 通常用于同时提供WWW和MAIL服务的 ...

  9. HTTP中的301重定向和302暂重定向重定

    302暂时重定向 302转向或者302重定向(302 redirect)指的是当浏览器要求一个网页的时候,主机所返回的状态码.302状态码的意义是暂时转向到另外一个网址. 另一个更常见的状态码是404 ...

最新文章

  1. XXX管理平台系统——会议管理
  2. 软件测试工程师面试问题
  3. linux opencv
  4. 新站SEO优化如何吸引搜索引擎蜘蛛的爬行?
  5. 【字符串】最长回文子串 ( 蛮力算法 )
  6. 趣学python编程第六章答案_Python核心编程-第六章-习题
  7. Pathlib获取当前文件绝对路径
  8. golang mysql 插入_Mysql学习(一)添加一个新的用户并用golang操作Mysql
  9. C核心技术手册(四十二)
  10. Please make sure you have the correct access rights and the repository exists
  11. 解读SQL Server 2012中的最新BI功能
  12. 网络协议从入门到底层原理(6)应用层 - 域名、DNS、DHCP、HTTP(ABNF、HTTP报文格式、请求方法、头部字段、状态码、跨域)、代理、CDN
  13. antdPro Nginx 打包部署
  14. GCC的gcc和g++区别,本质而言,gcc和g++并不是编译器,也不是编译器的集合,它们只是一种驱动器,根据参数中要编译的文件的类型,调用对应的GUN编译器而已
  15. 【leetcode】Trips and Users
  16. Hibernate 二级缓存和查询缓存
  17. spss实现主成分分析
  18. 如何利用ArcScene建立3维地层模型
  19. Cisco交换机链路聚合配置
  20. zemax设计35mm镜头_镜头光学设计宝典结合Zemax实例分析(中文版).pdf

热门文章

  1. 马尔代夫旅游选岛全功略
  2. 数据库 ACCESS与SQL SERVER 2000分页SQL语句 分析
  3. L1-046. 整除光棍(模拟除法)
  4. File IO(NIO.2):路径类 和 路径操作
  5. CentOS6.8下使用yum安装mysql,并远程登陆mysql
  6. 【MongoDB】Window启动和配置
  7. OAuth2.0 工作流程
  8. 添加或者更新字段说明
  9. node开发 npm install -g express-generator@4
  10. c# 字符串排序 (面试题)