CodeIgniter3配置.htaccess后仍需带index.php访问且子页面404问题求助
CodeIgniter3 站点异常解决方案
问题1:首页正常,导航跳转其他页面全部返回404
故障原因
CodeIgniter3 运行在Linux环境时严格区分大小写,你的代码存在大小写不匹配问题:
- 控制器方法名如
Getincontact、EDUCATION为大写开头,导航链接里路径写的是小写的pages/getincontact,路由匹配失败 - 若控制器文件名是小写的
pages.php,不符合CI3命名规范(要求控制器文件名与类名首字母大写)也会触发404
修复步骤
- 确认控制器文件名为
Pages.php,首字母大写,存放于application/controllers目录下 - 统一控制器方法名与路径的大小写,推荐全部改为小写避免后续踩坑:
// 修改控制器中的方法名为全小写 public function getincontact() { $this->load->view('pages/getincontact'); } public function education() { $this->load->view('pages/EDUCATION'); } // 剩余INTERNSHIP、CERTIFICATES、PROJECTSANDACHIEVEMENTS方法均改为全小写命名
- 同步修改intro页面导航链接的路径,和方法名保持一致:
<nav> <a href="<?php echo base_url(); ?>pages/getincontact">GET IN CONTACT</a> <a href="<?php echo base_url(); ?>pages/education">EDUCATION</a> <a href="<?php echo base_url(); ?>pages/internship">INTERNSHIP</a> <a href="<?php echo base_url(); ?>pages/certificates">CERTIFICATES</a> <a href="<?php echo base_url(); ?>pages/projectsandachievements">PROJECTS AND ACHIEVEMENTS</a> </nav>
问题2:配置.htaccess后仍需携带index.php才可访问
修复步骤
- 修改CI配置文件
application/config/config.php- 找到
$config['index_page']配置项,修改为:
$config['index_page'] = '';- 找到
$config['uri_protocol']配置项,修改为:
$config['uri_protocol'] = 'REQUEST_URI'; - 找到
- 确认Apache重写配置生效
- 打开Apache配置文件
httpd.conf,搜索LoadModule rewrite_module modules/mod_rewrite.so,删除行首的#注释开启重写模块 - 找到站点根目录对应的
<Directory>配置块,将AllowOverride None修改为AllowOverride All,保存后重启Apache
- 打开Apache配置文件
- 调整.htaccess规则适配环境,部分环境不支持PATH_INFO模式,修改重写规则为:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?$1 [L]
内容的提问来源于stack exchange,提问作者asayl
相关产品推荐
相关产品推荐

