簡體   English   中英

使用PHP從HTTP重定向到HTTPS

[英]Redirecting from HTTP to HTTPS with PHP

我正在購物車網站上工作,我希望在用戶輸入結算明細時將用戶重定向到HTTPS頁面,並保留下一頁的HTTPS連接,直到他退出為止。

我需要在服務器上安裝什么(我正在使用Apache)才能執行此操作,以及如何從PHP完成此重定向?

嘗試這樣的事情(應該適用於Apache和IIS):

if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] === "off") {
    $location = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $location);
    exit;
}

這是一個很好的方法:

<?php
if (!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || 
   $_SERVER['HTTPS'] == 1) ||  
   isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&   
   $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
{
   $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
   header('HTTP/1.1 301 Moved Permanently');
   header('Location: ' . $redirect);
   exit();
}
?>

在IIS上使用PHP從HTTP重定向到HTTPS

我無法重定向到HTTPS,無法在運行MS Internet Information Services(IIS)版本6的Windows服務器上運行。 我更習慣在Linux主機上使用Apache,所以我轉向互聯網尋求幫助,當我搜索“php redirect http to https”時,這是排名最高的Stack Overflow問題。 但是,所選答案對我不起作用。

經過一些試驗和錯誤后,我發現使用IIS時,對於非TLS連接, $_SERVER['HTTPS']設置為off 我認為以下代碼應該幫助通過搜索引擎來解決這個問題的任何其他IIS用戶。

<?php
if (! isset($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off' ) {
    $redirect_url = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header("Location: $redirect_url");
    exit();
}
?>

編輯 :從另一個Stack Overflow答案 ,一個更簡單的解決方案是檢查if($_SERVER["HTTPS"] != "on")

你可以隨時使用

header('Location: https://www.domain.com/cart_save/');

重定向到保存URL。

但我建議通過.htaccess和Apache重寫規則來實現。

在我的AWS beanstalk服務器上,我沒有看到$ _SERVER ['HTTPS']變量。 我確實看到$ _SERVER ['HTTP_X_FORWARDED_PROTO']可以是'http'或'https',所以如果你在AWS上托管,請使用:

if ($_SERVER['HTTP_HOST'] != 'localhost' and $_SERVER['HTTP_X_FORWARDED_PROTO'] != "https") {
    $location = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $location);
    exit;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM