CodeIgniter部署到共享虚拟主机后访问控制器/视图出现404错误求助
解决CodeIgniter子域名部署后的404问题
我帮你排查下这个子域名部署的404问题——静态资源能正常访问说明服务器基础配置没问题,核心问题大概率出在URL重写或者CodeIgniter的配置细节上,试试下面这些针对性的解决方案:
1. 调整.htaccess的重写规则
很多共享主机的PHP环境不支持index.php/$1这种路径传递方式,把你的.htaccess里的RewriteRule行修改为:
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
另外要确认主机是否开启了mod_rewrite模块,如果没开启的话,要么联系主机商开启,要么暂时把config.php里的$config['index_page']改回'index.php'(这是退而求其次的临时方案)。
2. 修正CodeIgniter核心配置
- 确保
base_url设置正确并添加结尾斜杠:
$config['base_url'] = 'http://crm.sachinartani.com/';
- 调整
uri_protocol参数,共享主机常需要切换为兼容模式:
$config['uri_protocol'] = 'AUTO';
如果AUTO不行,再试试PATH_INFO,这是多数共享主机适配的URI协议。
3. 检查控制器的命名规范
Linux系统的共享主机是大小写敏感的,而本地Windows/macOS可能不是,这很容易踩坑:
- 控制器文件名必须首字母大写(比如
Home.php) - 控制器类名必须和文件名完全一致(比如
class Home extends CI_Controller)
如果你的URL是http://crm.sachinartani.com/home,对应的控制器文件和类名必须符合这个规则。
4. 确认默认路由配置
打开application/config/routes.php,检查默认控制器是否设置正确:
$route['default_controller'] = 'home'; // 替换成你实际的默认控制器名称
确保这个控制器文件存在且能正常加载。
5. 查看服务器错误日志
登录你的共享主机控制面板(比如cPanel),找到错误日志功能,查看具体的404错误详情——日志会告诉你是重写规则没生效导致找不到index.php,还是控制器文件不存在,这能帮你更快定位问题。
如果以上方法都没解决,再检查下主机的PHP版本是否和本地一致,不同版本的CodeIgniter对PHP版本有不同要求,比如旧版CI可能不兼容PHP8+,新版CI需要PHP7.4及以上。
内容的提问来源于stack exchange,提问作者Sachin Artani
相关产品推荐
相关产品推荐

