必须在Web服务器层(Nginx或Apache)配置强制HTTPS跳转,CodeIgniter框架本身不处理协议跳转;Nginx用return 301 https://$host$request_uri;,Apache用.htaccess重写或Redirect permanent,并需验证配置语法与响应头。

要在CodeIgniter应用中实现所有HTTP请求自动跳转到HTTPS,必须在Web服务器层(Nginx或Apache)完成,框架本身不处理协议跳转;直接在CI路由文件里写重定向逻辑不仅无效,还会因请求已进入PHP而丧失安全性与性能。
Nginx环境下强制HTTPS跳转
这一步操作起来很简单,直接编辑Nginx站点配置文件,在监听80端口的server块中添加return指令即可。
第一步:打开你的站点配置文件,通常位于 /etc/nginx/conf.d/your-site.conf 或 /etc/nginx/sites-enabled/your-site。
第二步:确认该配置中已存在一个监听443端口的HTTPS server块,且SSL证书配置正确(否则跳转后页面将无法加载)。
第三步:在同一个配置文件中,新增或修改监听80端口的server块,内容如下:
【server_name必须与HTTPS块完全一致,否则$host变量会跳转到错误域名】
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
注意:这里用的是 $request_uri 而非 $uri,因为前者包含完整路径+查询参数(如 ?id=123&ref=abc),后者会丢失问号后的全部内容。若只写 https://$host$uri,用户访问 http://example.com/search?q=test 将跳转为 https://example.com/search,参数彻底消失。
Apache环境下启用HTTPS强制跳转
方法一:使用 .htaccess 文件(适用于共享主机或无服务器管理权限场景)
在项目根目录(即public目录)下找到或新建 .htaccess 文件,插入以下三行:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
方法二:在虚拟主机配置中直接设置(推荐,性能更好)
编辑Apache虚拟主机配置(如 /etc/apache2/sites-available/your-site.conf),在
Redirect permanent / https://example.com/
【此处必须用全域名(如 https://example.com/),不能写 https://%{HTTP_HOST}/,否则在多域名共用同一配置时可能跳转异常】
验证跳转是否生效
执行 sudo nginx -t(Nginx)或 sudo apache2ctl configtest(Apache)检查语法,无误后重启服务:sudo systemctl restart nginx 或 sudo systemctl restart apache2。
用curl命令测试真实响应头:
curl -I http://your-domain.com/about
观察返回中是否含 HTTP/1.1 301 Moved Permanently 和 Location: https://... 字段。若返回200或仍为HTTP地址,说明配置未生效或被其他规则覆盖。










