HTTP返回狀態代碼中301和302的區別

來源:互聯網
上載者:User

標籤:http   301   302   區別   

官方說法

List of HTTP status codes301 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.1added status codes 303 and 307 to distinguish between the two behaviours.[25] However, some Web applications and frameworks use the 302 status code as ifit were the 303.

簡單地說:

 301和302都是web伺服器響應HTTP協議請求狀態的數字代碼

  • 301 代表永久性轉移(Permanently Moved)

  • 302 代表暫時性轉移(Temporarily Moved)



兩者之間的差別

1)對於使用者

 301和302沒有區別,都是瀏覽器裡面的URL跳轉變成了一個新的URL地址

2)對於搜尋引擎

 存在網址劫持問題

650) this.width=650;" src="http://www.lichengbing.cn/ueditor/php/upload/image/20160806/1470418533822900.png" alt="網址劫持.png" />


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.confserver {        listen       80;        server_name  lichengbing.com;        location / {       #rewrite ^/(.*) http://www.lichengbing.cn/$1 permanent;#301 永久跳轉        rewrite ^/(.*) http://www.lichengbing.cn/$1 redirect;#302 臨時跳轉        }    }    server {        listen       80;        server_name  www.lichengbing.com;        location / {        root    html/www;        index index.html  index.htm;        }        access_log  logs/access_www.log  main;    }

2)我們利用curl命令來類比訪問,擷取http狀態代碼


[[email protected] ~]# curl -I  http://lichengbing.comHTTP/1.1 302 Moved Temporarily #302狀態代碼Server: nginx/1.6.3Date: Fri, 05 Aug 2016 17:11:43 GMTContent-Type: text/htmlContent-Length: 160Connection: keep-aliveLocation: http://www.lichengbing.cn/ #跳轉地址

網站監控302問題

平時我們用指令碼監控web伺服器喜歡監控狀態代碼,200、301、302表示正常,但是也有特殊情況,比如:

[[email protected] ~]# curl -I -s -o /dev/null -w "%{http_code}\n" http://lichengbingg.com302 #lichengbingg.com不存在(302 FOUND)[[email protected] ~]# curl -I -s -o /dev/null -w "%{http_code}\n" http://taobao.com302 #taobao.com 存在 (302 Moved)

所以,要麼監控web伺服器連接埠,要麼就刪掉302

#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監控更省心。


HTTP返回狀態代碼中301和302的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.