php - 标题位置重定向:https到https,http到http

时间:2012-01-10 09:56:32

标签: http https header location

如何正确使用标题功能,所以

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

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

可以用1个字符串写成?

.htaccess文件会将所有http页面重定向到https,没有任何问题,但我相信在header("location:...)中对http / https页面使用正确的语法是有意义的,所以它是正确的所有浏览器。

5 个答案:

答案 0 :(得分:10)

您还可以使用以下代码:

header("Location: //www.google.com");

答案 1 :(得分:4)

$protocol='http';
if (isset($_SERVER['HTTPS']))
  if (strtoupper($_SERVER['HTTPS'])=='ON')
    $protocol='https';

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

答案 2 :(得分:2)

if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != '') {
    header("location: https://".$_SERVER['HTTP_HOST']."/?para=abc");
} else {
    header("location: http://".$_SERVER['HTTP_HOST']."/?para=abc")
}

这应该适用于Apache,至少。

答案 3 :(得分:1)

您可以通过执行以下操作来隔离协议类型:

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

然后

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

答案 4 :(得分:0)

您可以通过以下代码获取协议:

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

然后像这样重定向

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