XAMPP环境CodeIgniter配置后无法通过URL访问Home控制器报404
故障原因
该404报错和Home控制器代码本身无关,由三类配置问题导致:
- Apache未开启URL重写模块,非
index.php开头的请求无法被转发到CodeIgniter框架入口文件 - 站点目录未开启
.htaccess覆盖权限,框架自带的路径重写规则不生效 - (CI4新版本高概率触发)路由配置默认关闭了自动路由映射,控制器无法直接通过URL路径匹配
修复步骤
1. 开启Apache重写模块
打开XAMPP控制面板,点击Apache栏的Config按钮,选择httpd.conf打开配置文件,搜索如下配置行:
#LoadModule rewrite_module modules/mod_rewrite.so
删除行首的#注释符,修改为:
LoadModule rewrite_module modules/mod_rewrite.so
2. 开启目录重写覆盖权限
在同一份httpd.conf文件中,找到你之前修改的站点目录配置块,将块内的AllowOverride配置值从None修改为All,完整参考配置如下:
DocumentRoot "C:/xampp/htdocs/crm/public/" <Directory "C:/xampp/htdocs/crm/public/"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory>
3. 校验public目录下重写文件
确认C:/xampp/htdocs/crm/public/目录下存在.htaccess文件,文件核心重写规则如下,若文件缺失直接新建该文件写入内容即可:
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
4. 校验路由配置(CI4新版本必查)
打开app/Config/Routes.php文件,按需选择配置方式:
- 如果要保留默认的控制器/方法自动映射访问规则,将
$routes->setAutoRoute(false);修改为$routes->setAutoRoute(true); - 如果要保持默认关闭自动路由的安全配置,手动新增一条路由规则即可:
$routes->get('home', 'Home::index');
5. 重启服务生效
所有配置修改完成后,在XAMPP控制面板重启Apache服务,直接访问http://localhost/home即可正常加载Home控制器对应的页面。
内容的提问来源于stack exchange,提问作者コーダーゴースト
相关产品推荐
相关产品推荐

