CodeIgniter启用HTTPS后非首页404错误,HTTP下正常运行
解决方案:HTTPS下非首页404问题
我来帮你排查并解决这个问题,这种情况通常是CodeIgniter的base_url配置未适配HTTPS,加上**.htaccess重写规则未处理HTTPS环境**导致的,具体修复步骤如下:
1. 修正CodeIgniter的base_url配置
打开application/config/config.php,将空的base_url设置为你的HTTPS域名:
$config['base_url'] = 'https://domain.in/'; $config['index_page'] = ''; // 这个保持不变即可
空的base_url会让CI在生成链接时依赖当前请求的协议,但HTTPS环境下可能出现路径解析错误,明确指定HTTPS的base_url能确保所有页面链接都正确生成。
2. 更新.htaccess重写规则
原有的.htaccess规则没有处理HTTPS的强制跳转和适配,替换为以下内容:
Options +SymLinksIfOwnerMatch RewriteEngine On # 强制所有HTTP请求跳转到HTTPS(可选但推荐,避免混合内容问题) RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 设置RewriteBase,确保服务器正确解析根目录路径 RewriteBase / # 仅当请求的文件/目录不存在时,转发到index.php处理 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
[L,R=301]:L表示停止后续规则,R=301是永久重定向,告诉搜索引擎更新地址RewriteBase /:帮助Apache正确识别网站根目录,避免子路径解析错误[QSA]:保留请求中的查询字符串,确保带参数的页面也能正常访问
额外检查项
- 确认你的服务器已经启用了
mod_rewrite模块(Apache环境) - 检查SSL证书是否正确安装,虚拟主机配置中是否开启了443端口并绑定了证书
- 清除浏览器缓存后再测试,避免旧的HTTP缓存导致的问题
内容的提问来源于stack exchange,提问作者Ravinder Singh
相关产品推荐
相关产品推荐

