php - перенаправление расположения заголовка: https на https, http на http - PullRequest
2 голосов
/ 10 января 2012

Как правильно использовать функцию заголовка, поэтому

header("location: http://".$_SERVER['HTTP_HOST']."/?para=abc"); //for http

и

header("location: https://".$_SERVER['HTTP_HOST']."/?para=abc"); //for https

можно записать в 1 строку, если это возможно?

Файл

.htaccess позаботится о том, чтобы все страницы http без проблем перенаправлялись на https, но я считаю, что имеет смысл использовать правильный синтаксис для страниц http / https в header("location:...), поэтому он подходит для всех браузеров. .

Ответы [ 5 ]

10 голосов
/ 28 июля 2013

Вы также можете использовать следующий код:

header("Location: //www.google.com");
4 голосов
/ 10 января 2012
$protocol='http';
if (isset($_SERVER['HTTPS']))
  if (strtoupper($_SERVER['HTTPS'])=='ON')
    $protocol='https';

header("location: $protocol://".$_SERVER['HTTP_HOST']."/?para=abc");
2 голосов
/ 10 января 2012
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != '') {
    header("location: https://".$_SERVER['HTTP_HOST']."/?para=abc");
} else {
    header("location: http://".$_SERVER['HTTP_HOST']."/?para=abc")
}

Это должно работать как минимум для Apache.

1 голос
/ 10 января 2012

Вы можете изолировать тип протокола, выполнив что-то вроде этого:

$protocol = isset($_SERVER['HTTPS']) and 'https' or 'http'

Тогда

header("location: $protocol://".$_SERVER['HTTP_HOST']."/?para=abc");
0 голосов
/ 22 мая 2015

Вы можете получить протокол по следующему коду:

$protocol = strtolower( substr( $_SERVER[ 'SERVER_PROTOCOL' ], 0, 5 ) ) == 'https' ? 'https' : 'http';

, а затем перенаправить как

header( 'location: ' . $protocol . '://' . $_SERVER[ 'HTTP_HOST' ] . '/?para=abc' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...