http协议 301和302的原理及实现
2016-08-04 15:49
309 查看
一、来看看官方的说法:
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved)。
302 redirect: 302 代表暂时性转移(Temporarily Moved )。
其实301、302的重定向都是通过对http协议的location的修改来实现的,那具体的怎么去修改location来实现重定向呢?
1.通过php的header函数去实现这个请求
如图:
如果写成下面这样,就是302了,与上图对比一下
如图:
也就是说,如果你在header函数内不标明的话,默认是302
重定向的原理:就是对http报文的location的修改(一般我们都是去web服务器上面做重定向操作的)
nginx有一个location指令,它可以修改http报文的location
咱们先看一张静态页面访问如图:
这里显示200,并没有出现location标签和信息,此时我们可以在nginx中加入这么一句话(设置301的方法):
下面是设置302的方法:
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved)。
302 redirect: 302 代表暂时性转移(Temporarily Moved )。
其实301、302的重定向都是通过对http协议的location的修改来实现的,那具体的怎么去修改location来实现重定向呢?
1.通过php的header函数去实现这个请求
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.baidu.com/"); ?>
如图:
如果写成下面这样,就是302了,与上图对比一下
<?php header("Location: http://www.baidu.com/"); ?>
如图:
也就是说,如果你在header函数内不标明的话,默认是302
重定向的原理:就是对http报文的location的修改(一般我们都是去web服务器上面做重定向操作的)
nginx有一个location指令,它可以修改http报文的location
咱们先看一张静态页面访问如图:
这里显示200,并没有出现location标签和信息,此时我们可以在nginx中加入这么一句话(设置301的方法):
location ~ \.html$ { rewrite ^(.*)\.html$ $1.php permanent; }
下面是设置302的方法:
location ~ \.html$ { rewrite ^(.*)\.html$ $1.php redirect; }
相关文章推荐
- http协议301、302的原理和实现
- nginx实现http协议301、302重定向
- nginx实现http协议301、302重定向
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- RPC的实现原理,是基于HTTP协议的还是tcp协议的?
- HTTP中302与301的区别以及在ASP.NET中如何实现
- http下载防盗链原理:http协议的字段referer 记录来实现
- http协议学习-缓存的实现原理
- XMLHttpRequest Level 2 使用指南——ajax实现http(s)协议的原理
- 基于HTTP协议之WEB消息实时推送技术原理及实现
- HTTP协议中的301与302状态的区别【转】
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- http协议的状态码 403 404 301 302 200 500 502 504 报错显示
- Http协议之301,302和307
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- http协议学习-断点续传和多线程下载的实现原理
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- HTTP中302与301的区别以及在ASP.NET中如何实现