PHP - 如何可用,如何重定向到https?

时间:2016-03-04 15:48:56

标签: php http redirect ssl https

我知道如何使用PHP重定向到https,但是有人知道如果通过HTTP请求站点并且服务器上有HTTPS可以重定向吗?

2 个答案:

答案 0 :(得分:1)

我不知道通过php检查服务器可用协议的方法。此外,如果有一个,当您想要检查并重定向到远程服务器时,您会迷路。因此,为了检查您的目标服务器是否能够处理https请求,您需要查询它。这是php-curl的一个例子:

<?php
/**
 * Check wether a destination is reachable.
 * 
 * @param string $uri uri to check
 * 
 * @return bool
 */
function checkAvailability($uri) {
    $handle = curl_init($uri);
    curl_setopt_array($handle, [
        CURLOPT_RETURNTRANSFER  => 1,
        CURLOPT_USERAGENT       => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
        ]);
    $r = curl_exec($handle);
    $responseCode = (int)curl_getinfo($handle, CURLINFO_HTTP_CODE);
    curl_close($handle);
    return $responseCode > 199 && $responseCode < 400;
}

//we test by checking the webpages of two of my local newspapers, l-iz.de will succeed, lvz.de will not
var_dump(checkAvailability('https://www.l-iz.de'));
var_dump(checkAvailability('https://lvz.de'));

方法checkAvailability简单测试卷曲网址是否返回200到399之间的成功HTTP代码。这不是很准确,但对于这个用例就足够了。因此,如果您使用https网址调用此方法,则会获得所需信息,网络服务器会接受https流量

答案 1 :(得分:0)

请看看这个..

<?php
if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    // Enter 'https' URL here...(Eg: https://google.com)
} else {
    // Enter 'http' URL here... (Eg: http://google.com)
}
?>