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

标签 php http redirect ssl https

我知道如何使用 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 流量

关于PHP - 如果可用,如何重定向到 https?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35800229/

相关文章:

php - 秒到分钟 :seconds from mysql to smarty

http - Response.ContentType = "application/vnd.ms-excel"适用于 IE 和 firefox 但不适用于 Safari

javascript - 如何将 Ruby 生成的 JavaScript 代码隐藏在单独的文件中?

php - Prestashop 不向 eshop 发送订单电子邮件

php - 在 Apache2 上运行 Python 脚本时,出现此错误 : IOError: [Errno 13] Permission denied

php - Ubuntu 中这些参数的等价物是什么?

asp.net - 访问服务器上使用 WebClient.UploadData 发送的确切数据

http - 如何加快将许多小 RDF 文件加载到 Sesame 中的速度?

php - 将 URL 重定向到正确的用户页面

android - 如何从 android 中的重定向 url 加载图像