本地环境下CodeIgniter应用无法运行,.htaccess配置求助
解决本地XAMPP下CodeIgniter应用无法运行的问题
我来帮你排查这个问题,看你的配置细节,核心问题出在.htaccess的位置和规则设置上,再配合几个关键的环境确认,就能搞定了:
首先先理清楚你的环境现状:
- 应用实际入口目录:
C:/xampp/htdocs/dev.application.pl/public_html/ - CodeIgniter的
base_url配置:$config['base_url'] = 'http://localhost/dev.application.pl/'; - 当前
.htaccess放在dev.application.pl目录下,规则未生效
下面是具体的修复步骤:
1. 先确认Apache的mod_rewrite模块已开启
这是URL重写能生效的基础:
- 打开XAMPP控制面板,点击Apache的「Config」按钮,选择
httpd.conf文件 - 找到一行代码:
#LoadModule rewrite_module modules/mod_rewrite.so,把前面的#去掉(取消注释) - 保存文件后,重启Apache服务
2. 调整.htaccess的位置和规则内容
你的public_html才是CodeIgniter的实际应用根目录,所以**.htaccess必须放到public_html目录下**,而不是上级的dev.application.pl目录。
把.htaccess替换成下面的规则:
RewriteEngine On # 这里的RewriteBase要匹配你的base_url路径,也就是/dev.application.pl/ RewriteBase /dev.application.pl/ # 排除实际存在的文件和目录,避免静态资源被重写 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 把请求路径转发给index.php,兼容Apache不同配置写法 RewriteRule ^(.*)$ index.php?/$1 [L]
为什么要这么改?
- 原来的
RewriteBase /public_html是错误的,因为你的base_url指向的是/dev.application.pl/,Apache需要从这个路径开始识别重写规则 - 把
.htaccess放到public_html下,才能正确拦截该目录下的所有请求 - 最后一行的
index.php?/$1是兼容写法,能避免部分Apache配置下出现的404问题
3. 调整CodeIgniter的config.php配置
打开public_html/application/config/config.php,确保这一行设置为空:
$config['index_page'] = '';
这样CodeIgniter就不会在URL里强制加上index.php,配合.htaccess实现干净的URL访问。
4. 验证配置
重启Apache后,访问http://localhost/dev.application.pl/,如果正常加载首页,再试试访问一个具体的控制器(比如http://localhost/dev.application.pl/welcome),确认路由能正常跳转。
内容的提问来源于stack exchange,提问作者anakin




