You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SSL证书网站重定向时HTTPS转为HTTP,PHP代码问题排查求助

重定向时HTTPS转为HTTP的问题排查与解决

嘿,我来帮你定位这个重定向丢协议的问题~先看你提供的代码,核心问题大概率出在这几个地方:

1. SITE_PROTOCOL 常量配置错误

你代码里两次用到了SITE_PROTOCOL,如果这个常量是**硬编码成http://**的,那不管当前页面是HTTPS访问,重定向都会强制跳转到HTTP版本。这是最常见的原因。

建议把静态定义的常量改成动态判断当前请求协议,这样能自动适配HTTPS/HTTP:

// 动态生成协议,替代固定的SITE_PROTOCOL
$siteProtocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://';

2. 建议改用标准HTTP重定向头(Location)而非Refresh

你现在用的Refresh是HTML层面的刷新机制,并非标准的HTTP重定向。改用Location头不仅更符合HTTP规范,也能更可靠地保持协议一致性:

// 先动态获取正确的协议
$siteProtocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://';
$redirectUrl = $siteProtocol . $_SERVER['HTTP_HOST'] . SITE_PREFIX;

// 发送标准重定向响应头(302为临时重定向,如需永久重定向可改为301)
header("HTTP/1.1 302 Found");
header("Location: " . $redirectUrl);
exit; // 必须添加exit,终止后续代码执行,避免重定向失效

3. 额外检查点

  • 确认服务器(如Nginx/Apache)是否配置了强制HTTPS的规则,如果服务器层面没有做跳转,即使代码生成HTTPS链接,也可能被反向代理等环节改写为HTTP。
  • 检查$_SERVER['HTTP_HOST']是否返回正确的域名,避免因服务器配置问题导致域名拼接错误。

内容的提问来源于stack exchange,提问作者ex1t3

火山引擎 最新活动