gpt4 book ai didi

每个页面上的 PHP 函数导致重定向循环

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:46 25 4
gpt4 key购买 nike

我正在与非营利组织合作开发今年早些时候由其他人构建的应用程序。该站点需要安全,因此我与他们的主机合作安装了 SSL 证书。我知道更新 .htaccess 服务器文件会更容易执行重定向,但我们的约定将在大约 3 周后结束。很难通过非营利客户联系将要求反馈给托管公司。作为替代方案,我希望有一个基于 php 的重定向以防万一。

这是包含在所有页面上的应用标题页的开始部分。我们有 3 个具有不同域和生产域的测试服务器。我添加了一个条件,因此在本地运行时不会发生重定向。当我用我的条件调用该函数时,会在测试服务器(它们具有 SSL 证书)上导致重定向循环。有人可以帮忙解决我不太明白的问题吗?谢谢。

或者有人知道 apache .htaccess 文件是否可以作为客户用户使用 Dreamhost 进行更新吗?

<?php 

function redirectToHTTPS() {
if($_SERVER['HTTPS']!="on") {
$redirect= "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location:$redirect");
}
}


$serverList = array('localhost', '127.0.0.1');
if(!in_array($_SERVER['HTTP_HOST'], $serverList)) {
redirectToHTTPS();
}

ob_start();
include ($_SERVER['DOCUMENT_ROOT'].'/rmhcOmahaTeam/config/paths.php');
include ($_SERVER['DOCUMENT_ROOT'].'/rmhcOmahaTeam/config/db_connect.php');
?>

最佳答案

你的问题出在这里:

$serverList = array('localhost', '127.0.0.1');
if(!in_array($_SERVER['HTTP_HOST'], $serverList)) {
redirectToHTTPS();
}

这段代码说的是“如果 HTTP_HOST 变量是 localhost127.0.0.1,则重定向到 SSL 站点”。然后,在 redirectToHTTPS() 函数中,您将重定向到您正在检查的完全相同的 HTTP_HOST。所以,基本上,您要说的是:

if (true) {
redirectToHTTPS();
}

您需要检查协议(protocol),而不是 HTTP_HOST:

define('HTTPS', isset($_SERVER['HTTPS']) && filter_var($_SERVER['HTTPS'], FILTER_VALIDATE_BOOLEAN));
if ( ! HTTPS) {
redirectToHTTPS();
}

关于每个页面上的 PHP 函数导致重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com