codeigniter上线后页面打不开,主因是环境适配问题:需检查index_page设为空、uri_protocol适配服务器(如改query_string)、apache/nginx重写规则正确配置、base_url格式合规(含协议及尾部斜杠)、数据库hostname用127.0.0.1并启用mysqli扩展。

CodeIgniter 上线服务器后页面打不开,多数不是框架坏了,而是环境适配没到位。核心问题通常集中在 URL 路由解析失败、入口文件不可达、或关键配置与服务器实际能力不匹配。下面分几个关键方向直接给可操作的检查项和修复动作。
检查 index_page 和 uri_protocol 配置
这两个配置决定请求如何被识别和分发:
-
$config['index_page'] 必须设为空字符串:
$config['index_page'] = '';。若留为'index.php',所有 URL 都必须显式带index.php/,否则 Web 服务器直接返回 404 -
$config['uri_protocol'] 默认是
'REQUEST_URI',但部分共享主机、CGI 环境或 Nginx 配置不全时,$_SERVER['REQUEST_URI']不可用。可依次尝试改为:'QUERY_STRING'(兼容性最好)或'PATH_INFO'(Nginx 下需配套 fastcgi_param 配置)
确认 Web 服务器重写规则已生效
Apache 和 Nginx 处理方式完全不同,不能混用:
-
Apache:确保项目根目录有正确
.htaccess,内容含RewriteRule ^(.*)$ index.php/$1 [L];同时确认mod_rewrite已启用,并在虚拟主机配置中设置AllowOverride All -
Nginx:不能依赖 .htaccess。必须在 server 块中配置
try_files $uri $uri/ /index.php?$query_string;,并确保 PHP location 块里包含fastcgi_split_path_info和fastcgi_param PATH_INFO $fastcgi_path_info;
验证 base_url 和资源加载路径
页面“打不开”有时是白屏或样式错乱,本质是 CSS/JS 加载失败:
-
$config['base_url'] 必须以协议开头且结尾带斜杠,例如:
$config['base_url'] = 'https://yourdomain.com/';。少斜杠会导致base_url('css/app.css')拼出https://yourdomain.comcss/app.css,404 - 浏览器按 F12 查看 Network 面板,看哪些静态资源返回 404。若
index.php本身能访问但资源 404,基本锁定base_url或重写规则问题
排查数据库与环境配置差异
部分页面(如后台、用户中心)打不开,可能是数据库连接失败导致白屏或报错被静默:
- 检查
application/config/database.php中的hostname:生产环境慎用'localhost',改用'127.0.0.1'避免 Unix socket 路径问题 - 确认 PHP 已启用
mysqli或pdo_mysql扩展(运行php -m | grep mysqli验证) - MySQL 8.0+ 用户注意认证插件:若报
caching_sha2_password相关错误,执行ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';











