programing

PHP를 사용하여 HTTP에서 HTTPS로 리디렉션

firstcheck 2022. 9. 6. 00:00
반응형

PHP를 사용하여 HTTP에서 HTTPS로 리디렉션

장바구니 웹사이트에서 작업하고 있습니다.사용자가 청구 상세 내용을 입력할 때 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로 리디렉션

MS Internet Information Services(IIS; 인터넷 정보 서비스) 버전 6을 실행하는 Windows 서버에서 HTTPS로 리다이렉트 하는 데 문제가 있었습니다.Linux 호스트에서 Apache를 사용하는 데 더 익숙하기 때문에 인터넷에 도움을 요청했습니다. "php redirect http to https"를 검색했을 때 가장 높은 순위의 Stack Overflow 질문이었습니다.하지만, 선택한 답변은 나에게 효과가 없었다.

몇 번의 시행착오 끝에 IIS를 통해서$_SERVER['HTTPS']는 TLS 이외의 접속용으로 설정됩니다.저는 다음 코드가 검색 엔진을 통해 이 질문을 받는 다른 IIS 사용자에게 도움이 될 것이라고 생각했습니다.

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

편집: 다른 스택오버플로우 답변에서 보다 간단한 해결책은if($_SERVER["HTTPS"] != "on").

언제든지 사용할 수 있습니다.

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

저장 URL로 수정합니다.

단, .htaccess와 Apache rewrite rules에 의한 사용을 권장합니다.

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;
}

언급URL : https://stackoverflow.com/questions/5106313/redirecting-from-http-to-https-with-php

반응형