域名重定向

1.什麼是重定向?

簡單講,就是從網址A調轉到網址B。

官方定義:重定向(Redirect)就是通過各種方法將各種網路請求重新定個方向轉到其它位置(如:網頁重定向、域名的重定向、路由選擇的變化也是對數據報文經由路徑的一種重定向)。

2.為什麼需要重定向?什麼時候需要重定向?

1).網站調整(如改變網頁目錄結構),例如想直接使用域名訪問網站;
2).網頁被移到一個新地址;
3).網頁擴展名改變(如應用需要把.php改成.Html或.shtml)。
這種情況下,如果不做重定向,則用戶收藏夾或搜索引擎資料庫中舊地址只能讓訪問客戶得到一個404頁面錯誤資訊,訪問流量白白喪失;再者某些註冊了多個域名的網站,也需要通過重定向讓訪問這些域名的用戶自動跳轉到主站點等。
 
3.常用的重定向方式有:301 redirect、302 redirect與meta fresh。

官方的比較簡潔的說明:

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

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

meta fresh:通過網頁中的meta指令,在特定時間後重定向到新的網頁,現在很少用了。

4.301 redirect 和302 redirect的區別

詳細來說,301和302狀態碼都表示重定向,就是說瀏覽器在拿到伺服器返回的這個狀態碼後會自動跳轉到一個新的URL地址,這個地址可以從響應的Location首部中獲取(用戶看到的效果就是他輸入的地址A瞬間變成了另一個地址B)——這是它們的共同點。他們的不同在於。301表示舊地址A的資源已經被永久地移除了(這個資源不可訪問了),搜索引擎在抓取新內容的同時也將舊的網址交換為重定向之後的網址;302表示舊地址A的資源還在(仍然可以訪問),這個重定向只是臨時地從舊地址A跳轉到地址B,搜索引擎會抓取新的內容而保存舊的網址

5.什麼時候選擇301重定向還是302重定向呢?
使用301重定向的場景:
1)域名到期不想續費(或者發現了更適合網站的域名),想換個域名。
2)在搜索引擎的搜索結果中出現了不帶www的域名,而帶www的域名卻沒有收錄,這個時候可以用301重定向來告訴搜索引擎我們目標的域名是哪一個。即可以將不帶www頂級域名重定向到帶www的二級域名
3)空間伺服器不穩定,換空間的時候。
使用302重定向的場景:
301代表永久性轉移,301重定向是網頁更改地址後對搜索引擎友好的最好方法,只要不是暫時搬移的情況,都建議使用301來做轉址。
簡單理解,

從網站A(搜索排名靠後)上做了一個302跳轉到網站B(搜索排名很靠前),這時候有時搜索引擎會使用網站B的內容,但卻收錄了網站A的地址,這樣在不知不覺間,網站B在為網站A作貢獻,利用網站B讓網站A的排名靠前了。
301跳轉對查找引擎是一種對照馴良的跳轉編製,也是查找引擎能夠遭遇的跳轉編製,它告訴查找引擎,這個地址棄用了,永遠轉向一個新地址,可以轉移新域名的權重。而302重定向很容易被搜索引擎誤認為是利用多個域名指向同一網站,那麼你的網站就會被封掉,罪名是「利用重複的內容來干擾搜索結果的網站排名」。
 
6.PHP重定向方法
301重定向方法:
1)所有網頁都 301 重定向到指定網址
<?php
  header("HTTP/1.1 301 Moved Permanently");
  Header("Location: //www.domain.com");
?>

2)項級域名 301 重定向到帶 www 的二級域名(例如:舊域名301重定向到新域名)

<?php
  $host = $_SERVER['HTTP_HOST'];
  $request = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
  if($host == 'domain.com'){
      header('HTTP/1.1 301 Moved Permanently');
      header('Location: //www.domain.com'.$request);
  }
?>

302重定向方法:

1)所有網頁 302 重定向指定網址

<?php
  header("Location: //www.domain.com");
?>

2)指定網址,302到另一個網站的首頁(例如:舊域名302重定向到新域名)

<?php
  $host = $_SERVER['HTTP_HOST'];
  if($host == 'domain.com'){
      header('HTTP/1.1 302 Moved Temporarily');
      header('Location: //www.domain.com');
  }
?>

 ps:請將上面的domain.com和www.domain.com修改成你想要跳轉到的域名。

Tags: