1. 程式人生 > >http站點使用301方式跳轉到https

http站點使用301方式跳轉到https

首先說一下http和https:http定義了客戶端(瀏覽器)與伺服器之間的通訊規則,埠號是80,大部分客戶端指的是我們平時上網的瀏覽器,當然有很多中斷例如手機APP、嵌入式軟體也可能採用http和伺服器通訊,這種協議在傳輸的時候是明文的,也就是在通訊過程中傳輸的資料線上路的每個節點(例如閘道器,路由器)都可以被劫持到,所以安全性較低。而https即http下加入SSL層加密,埠號是443,傳輸資料無法被劫持到。
對於安全性較高的站點(金融、銀行、電子商務等)一般都採用https,目前越來越多的站點都使用了https,但是很多使用者輸入的時候都是直接輸入網址,預設瀏覽器作為http來請求,這樣就需要在伺服器端做一個跳轉到https站點,在伺服器端跳轉有301和302兩種方式,這裡的301和302指的是http請求狀態碼,對使用者來講沒什麼區別,但是對於搜尋引擎關係重大,301是永久重定向而302則被認為是臨時的,所以應該採用301的方式,做301跳轉一般又有兩種方式:1.使用程式跳轉2.使用web伺服器配置跳轉。
以PHP程式為例可以在入口檔案或者公共檔案中使用

$scheme = isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'] : '';

if(($scheme === 'http')){
    header('HTTP/1.1 301 Moved Permanently');
    header('Location:https://你的域名' . $_SERVER['REQUEST_URI']);
}

這樣就可以實現全站301跳轉了,$_SERVER[‘REQUEST_URI’]表示保留原來url上的引數
另外一種方式就是使用web伺服器配置進行跳轉,以Nginx為例,在80埠的虛擬主機中使用

rewrite ^(.*) https://你的域名$1 permanent;

這樣就可以實現和上述程式一樣的301跳轉,有條件的建議使用web伺服器做跳轉,一個是不用解析應用程式程式碼,再就是通過程式跳轉的方式雖然先發送了301狀態碼資訊,但是Location方式是302,有的客戶端會識別成302跳轉。

轉自黎明互聯http站點使用301方式跳轉到https.