同一域名下独立目录部署CodeIgniter新项目的配置问题
嘿,这种在同一服务器下部署多个CodeIgniter项目的需求很常见,我帮你梳理下完整的配置步骤,确保app2能正常通过子路径访问:
1. 先确认基础依赖与权限
- 首先得确保你的服务器开启了
mod_rewrite模块——这是CodeIgniter实现伪静态路由的核心,大部分商用主机默认是开启的,如果不确定,你可以查看phpinfo里的rewrite模块状态,或者联系主机商确认。 - 检查
app2文件夹及其子目录的权限,一般设置为文件夹755、文件644就可以,避免因为权限不足导致无法加载文件。
2. 配置app2的base_url参数
打开app2/application/config/config.php,找到base_url配置项,修改为:
$config['base_url'] = 'http://website.com/app2/';
注意末尾的斜杠一定不能少,这样CodeIgniter才能正确生成项目内的链接资源。
3. 给app2目录配置专属的.htaccess
在app2文件夹的根目录下创建(或修改).htaccess文件,写入以下规则:
RewriteEngine On RewriteBase /app2/ # 直接放行真实存在的文件或目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 将所有请求转发到app2的index.php处理 RewriteRule ^(.*)$ index.php/$1 [L]
这个配置会把http://website.com/app2/xxx这类请求,全部转发到app2项目的index.php,让CodeIgniter的路由系统处理。
4. 检查主目录的.htaccess(避免冲突)
如果你的根目录(public_html)已经有一个.htaccess来处理主CI项目,只要它的规则是常规的伪静态配置,就不会影响app2的访问。常规的主目录.htaccess内容如下:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
因为Apache会优先使用子目录下的.htaccess规则,所以当访问/app2/开头的路径时,会自动用app2里的配置,不用额外修改主目录的规则。
最后测试验证
完成以上配置后,访问http://website.com/app2/或者具体的控制器路径(比如http://website.com/app2/welcome),如果能正常加载app2的页面,就说明配置成功了。如果遇到404或500错误,可以排查:
mod_rewrite是否真的开启- 主机是否允许
.htaccess生效(需要虚拟主机配置里开启AllowOverride All) base_url是否设置正确
内容的提问来源于stack exchange,提问作者Valkay
相关产品推荐
相关产品推荐

