You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 4子项目如何移除URL中的public路径

解决CodeIgniter 4嵌套项目URL跳转问题

问题原因

访问localhost/projectA/projectB/home时,请求被projectA根目录的.htaccess捕获,直接转发到projectA的index.php,导致请求被projectA处理而非嵌套的projectB。

解决方案

1. 给projectB添加专属.htaccess

在projectA/projectB/目录下创建.htaccess文件,写入以下规则:

RewriteEngine On

# 跳过实际存在的文件或目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将请求转发到projectB的public/index.php
RewriteRule ^(.*)$ public/index.php/$1 [L,NC,QSA]

2. (可选)优化projectA的.htaccess规则

如果上述配置未生效,可在projectA根目录的.htaccess开头添加规则,跳过projectB路径的处理:

# 让projectB的请求直接由子目录规则处理
RewriteRule ^projectB/ - [L]

# 原projectA的规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

原理说明

Apache服务器会优先读取请求路径中子目录的.htaccess文件,配置projectB的专属规则后,访问localhost/projectA/projectB/home时,请求会被projectB的.htaccess转发到自身的public/index.php,从而由projectB的CodeIgniter实例处理。

注意事项

  • 确保Apache配置中开启了AllowOverride All,否则.htaccess规则不会生效。
  • 检查projectB的public目录及文件权限,确保Apache用户有读取权限。

内容的提问来源于stack exchange,提问作者muza zamu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 02:04:59