http狀態值返回301 302 以及(302狀態值和網絡劫持的關係)

一.簡單介紹

(1).

301,302 都是HTTP狀態的編碼,都代表着某個URL發生了轉移,不同之處在於:

301 redirect: 301 代表永久性轉移(Permanently Moved)。

302 redirect: 302 代表暫時性轉移(Temporarily Moved )。

(2).

301,302對用戶來說沒有區別,他們看到效果只是一個跳轉,瀏覽器中舊的URL變成了新的URL。頁面跳到了這個新的url指向的地方。

302轉向可能會有URL規範化及網址劫持的問題。可能被搜索引擎判爲可疑轉向,甚至認爲是作弊

二.網址劫持

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劫持。你辛辛苦苦所寫的內容就這樣被別人偷走了

當網頁A用301重定向轉到網頁B時,搜索引擎可以肯定網頁A永久的改變位置,或者說實際上不存在了,搜索引擎就會把網頁B當作唯一有效目標。

301的好處是:

第一,   沒有網址規範化問題。

第二,   也很重要的,網頁A的PR網頁級別會傳到網頁B。

三.Apache中實現301、302

方法一,url rewrite,mod_rewrite

Rewriteengine on

RewriteCond %{HTTP_HOST} ^cmp.soso.com [NC]

RewriteRule ^/js/(.*) http://www.soso.com/js/$1  [R=301]

ServerName cmp.soso.com

將cmp.soso.com中js目錄的下所有訪問重定向到http://www.soso.com/js/,指定跳轉返回碼爲301。

對於[R=301]的詳解:

‘redirect|R [=code]‘ (強制重定向 redirect)
以http://thishost[:thisport]/(使新的URL成爲一個URI) 爲前綴的Substitution可以強制性執行一個外部重定向。如果code沒有指定,則產生一個HTTP響應代碼302(臨時性移動)。 如果需要使用在300-400範圍內的其他響應代碼,只需在此指定這個數值即可,另外,還可以使用下列符號名稱之一: temp (默認的), permanent, seeother. 用它可以把規範化的URL反饋給客戶端,如, 重寫“/~”爲 “/u/”,或對/u/user加上斜槓,等等。

注意: 在使用這個標記時,必須確保該替換字段是一個有效的URL! 否則,它會指向一個無效的位置! 並且要記住,此標記本身只是對URL加上 http://thishost[:thisport]/的前綴,重寫操作仍然會繼續。 通常,你會希望停止重寫操作而立即重定向,則還需要使用’L'標記.

方法二 Redirect ,涉及模塊:mod_alias

例:

<VirtualHost 10.1.146.163:80>

DocumentRoot /home/qmhball/web/mybranches/stat_3276/oa/

ServerName oalogin.com

Redirect 301 /login.php http://www.soso.com

</VirtualHost>

將oalogin.com下對login.php的訪問重定向到http://www.soso.com,返回碼301。

如果沒有指定redirect的返回值(上例中的301),則默認重定向是”臨時性的”(HTTP status 302)。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章