如何在CodeIgniter中设置首页?子目录结构下的访问配置问题
我来帮你搞定这个问题!要让访问http://localhost/ci直接加载frontend目录下的Home控制器,主要需要调整路由配置和确保.htaccess正常工作,一步步来:
1. 补全并修正你的.htaccess文件
你的.htaccess内容不完整,直接替换成下面这个完整版本,放在CI的根目录(也就是localhost/ci对应的文件夹里):
RewriteEngine On # 排除真实存在的文件和目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 把所有请求转发到index.php处理 RewriteRule ^(.*)$ index.php/$1 [L]
这个配置的核心是去掉URL里的index.php,让CI的路由规则能正常生效。
2. 修改路由配置,指定默认控制器
打开application/config/routes.php,找到$route['default_controller']这一行,把默认值改成你的子目录控制器路径:
$route['default_controller'] = 'frontend/home';
CodeIgniter默认只会在根目录的controllers文件夹里找默认控制器,所以必须明确指定子目录+控制器名(这里frontend是子目录,home是控制器文件名的小写)。
3. 确认控制器代码的正确性
检查controllers/frontend/Home.php的代码,确保类名和文件名匹配(CI对大小写有要求:文件名首字母大写,类名和文件名一致):
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Home extends CI_Controller { public function index() { // 加载对应的视图文件 $this->load->view('frontend/home'); } }
这里的index方法是控制器的默认方法,当访问控制器时没有指定方法名,就会自动调用它,负责加载你写的home.php视图。
4. 最后检查几个关键点
如果设置完还是不行,排查这几个地方:
- 确保服务器开启了
mod_rewrite模块(Apache的话需要在httpd.conf里启用,Nginx用户要对应调整伪静态规则) - 打开
application/config/config.php,确认base_url设置正确:$config['base_url'] = 'http://localhost/ci/'; - 检查
frontend子目录的权限,确保服务器能读取里面的控制器和视图文件
现在直接访问http://localhost/ci,应该就能自动加载你想要的前端首页了!
内容的提问来源于stack exchange,提问作者PapT
相关产品推荐
相关产品推荐

