如何正确使用标题功能,所以
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页面使用正确的语法是有意义的,所以它是正确的所有浏览器。
答案 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' );