Codeigniter集成Lumen API后htaccess路径重定向404问题求助
解决步骤
1. 修改项目根目录(CodeIgniter侧)的.htaccess规则
问题根源是根目录的重写规则将所有请求都转发到了CodeIgniter的入口文件,api开头的路径没有被排除,导致无法进入api目录下的Lumen规则处理。
在根目录.htaccess的HTTPS跳转规则之后、转发到CI入口的规则之前,新增一行放行api路径的规则,修改后的完整重写块如下:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [QSA,R,L] # 新增规则:匹配api开头的请求直接放行,不进入CI路由处理 RewriteRule ^api(/.*)?$ - [L] RewriteCond $1 !^(index\.php|public|robots\.txt) RewriteCond $1 !^([^\..]+\.php|robots\.txt|sitemap\.xml) RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule>
2. 验证Lumen侧配置
你当前api目录下的.htaccess规则无需修改,正常情况修改根目录规则后:
- 访问
example.com/api/test会进入Lumen框架处理,返回对应接口响应 - 访问
example.com/api返回404属于Lumen框架的正常逻辑:Lumen默认没有定义根路径/的路由,如需处理该请求,只需在Lumen的路由文件中新增对应路由即可:$router->get('/', function () { return 'API服务运行正常'; });
可选校验项
如果修改后仍有问题,可逐一检查:
- 服务器已开启
mod_rewrite扩展 api目录及内部文件的权限设置正确,Web进程拥有读取执行权限- Lumen的路由定义符合预期,
/test路径的路由确实存在
内容的提问来源于stack exchange,提问作者Linesofcode
相关产品推荐
相关产品推荐

