• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >Linux > HTTP返回状态码中301和302的区别

HTTP返回状态码中301和302的区别

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含http返回状态,http返回状态码,http协议返回状态码,http返回码状态不对,http状态返回码查询等服务器相关知识,网友希望可以进行参考

HTTP返回状态码中301和302的区别


官方说法

List of HTTP status codes
301 Moved Permanently
#This and all future requests should be directed to the given URI.[23]
302 Found
#This is an example of industry practice contradicting the standard. The HTTP/1.0 
specification (RFC 1945) required the client to perform a temporary redirect (the 
original describing phrase was "Moved Temporarily"),[24] but popular browsers 
implemented 302 with the functionality of a 303 See Other. Therefore, HTTP/1.1
added status codes 303 and 307 to distinguish between the two behaviours.[25] 
However, some Web applications and frameworks use the 302 status code as if
it were the 303.

简单地说:
301和302都是web服务器响应HTTP协议请求状态的数字代码
301 代表永久性转移(Permanently Moved)
302 代表暂时性转移(Temporarily Moved)

两者之间的差别
1)对于用户
301和302没有区别,都是浏览器里面的URL跳转变成了一个新的URL地址
2)对于搜索引擎
存在网址劫持问题

302重定向和网址劫持(URL hijacking)有什么关系呢?这要从搜索引擎如何处理302转向说起。从定义来说,从网址A做一个302重定向到网址B时,主机服务器的隐含意思是网址A随时有可能改主意,重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302重定向时,一般只要去抓取目标网址就可以了,也就是说网址B。
实际上如果搜索引擎在遇到302转向时,百分之百的都抓取目标网址B的话,就不用担心网址URL劫持了。问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。为什么呢?比如说,有的时候A网址很短,但是它做了一个302重定向到B网址,而B网址是一个很长的乱七八糟的URL网址,甚至还有可能包含一些问号之类的参数。很自然的,A网址更加用户友好,而B网址既难看,又不用户友好。这时Google很有可能会仍然显示网址A。
由于搜索引擎排名算法只是程序而不是人,在遇到302重定向的时候,并不能像人一样的去准确判定哪一个网址更适当,这就造成了网址URL劫持的可能性。也就是说,一个不道德的人在他自己的网址A做一个302重定向到你的网址B,出于某种原因, Google搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B上的内容,这种情况就叫做网址URL劫持。你辛辛苦苦所写的内容就这样被别人偷走了。

Nginx下配置301 302
1)利用server的rewrite功能对网址地址重写

vim www.conf
server {
        listen      80;
        server_name  bkjia.com;
        location / {
      #rewrite ^/(.*) http://www.bkjia.net/$1 permanent;#301 永久跳转
        rewrite ^/(.*) http://www.bkjia.net/$1 redirect;#302 临时跳转
        }
    }
    server {
        listen      80;
        server_name  www.bkjia.com;
        location / {
        root    html/www;
        index index.html  index.htm;
        }
        access_log  logs/access_www.log  main;
    }

2)我们利用curl命令来模拟访问,获取http状态码

[root@db02 ~]# curl -I  http://bkjia.com
HTTP/1.1 302 Moved Temporarily #302状态码
Server: nginx/1.6.3
Date: Fri, 05 Aug 2016 17:11:43 GMT
Content-Type: text/html
Content-Length: 160
Connection: keep-alive
Location: http://www.bkjia.net/ #跳转地址

网站监控302问题
平时我们用脚本监控web服务器喜欢监控状态码,200、301、302表示正常,但是也有特殊情况,比如:
[root@db02 ~]# curl -I -s -o /dev/null -w "%{http_code}\n" http://bkjia.com
302 #bkjia.com不存在(302 FOUND)
[root@db02 ~]# curl -I -s -o /dev/null -w "%{http_code}\n" http://muu.cc
302 #muu.cc 存在 (302 Moved)

所以,要么监控web服务器端口,要么就删掉302

12345 #if [ "`nc -w 5 $url $Port &&echo ok`" = "ok" ];then
#if [ "`echo -e '\n'|telnet $url $Port|grep Connected|wc -l`" = "1" ];then
#if [ "`nmap $url -p $Port|grep open|wc -l`" = "1" ];then
#if [ "`curl -I http://$url 2>/dev/null|head -1|egrep "200|301"|wc -l`" = "1" ];then
#if [ "`curl -I -s -o /dev/null -w '%{http_code}\n' http://$url`" = "200" ];then

Zabbix监控更省心。

本文永久更新链接地址:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • HTTP返回状态码中301和302的区别

相关文章

  • centos7下快速安装mysql
  • centos7搭建DHCP简要服务器
  • CentOS6下Apache服务器开启webDAV模块
  • Centos 6.5 DNS配置
  • CentOS上安装MongoDB 3.2
  • linux 服务器自动备份脚本的方法(mysql、附件备份)
  • centos6.5下部署elk
  • CentOS7上安装WordPress
  • docker安装redmine步骤
  • CentOS云主机中Nginx正向代理同时支持 https 和 http 访问

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Linux磁盘管理之LVM的使用
    • Ubuntu 16.04 源码编译安装PHP7
    • Linux中Varnish基础应用
    • ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
    • centos6.6安装mysql5.7.9tar包
    • centos服务器下nginx防盗链设置
    • Ubuntu 14.04下手动安装.NET Core SDK
    • CentOS7安装MySQL5.6.28及其修改密码
    • CentOS服务器系统下更改Apache默认网站目录
    • 在centos部署yii2 advanced框架

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有