我知道如何使用 PHP 重定向到 https,但是有人知道如何仅在通过 HTTP 请求站点并且服务器上可用 HTTPS 时才重定向吗?
我不知道有什么方法可以通过 php 检查服务器的可用协议(protocol)。此外,如果有的话,当您想要检查并重定向到远程服务器时,您会迷路。因此,为了检查您的目标服务器是否能够处理 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 简单测试 curl url 是否返回 200 到 399 之间的成功 HTTP 代码。这不是尽可能准确,但对于这个用例应该足够了。因此,如果您使用 https url 调用此方法,您将获得所需的信息,网络服务器是否接受 https 流量
我是一名优秀的程序员,十分优秀!