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

CodeIgniter旧项目MAMP本地运行:路由与API故障排查求助

解决CodeIgniter 2.1.4在MAMP nginx环境下的路由404问题

核心问题分析

你遇到的路由失效、非基础URL返回404的问题,根源在于两个点:

  • nginx默认不解析Apache的.htaccess文件,原有的重写规则完全不起作用
  • CodeIgniter路由规则写法错误,导致自定义路由无法匹配

分步修复方案

1. 修正CodeIgniter路由规则

打开application/config/routes.php,把自定义路由前的斜杠去掉——CI2的路由目标路径不需要前置斜杠:

$route['default_controller'] = "user";
$route['404_override'] = '';
// 移除目标路径开头的斜杠
$route['verify/(:any)'] = "user/verify/$1";

2. 配置nginx的URL重写规则

因为nginx不依赖.htaccess,必须直接在站点配置中添加重写逻辑:

  1. 找到MAMP的nginx配置文件(通常路径是/Applications/MAMP/conf/nginx/nginx.conf,或者站点专属的配置文件)
  2. 在对应server块内的location /节点下,添加如下规则:
location / {
    # 尝试直接访问文件/目录,否则转发到index.php处理
    try_files $uri $uri/ /index.php?$args;

    # 确保PHP文件能被正确解析
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000; # MAMP默认PHP端口,若有修改请对应调整
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
  1. 重启MAMP的nginx服务,使配置生效

3. (可选)修复.htaccess(仅当nginx启用htaccess时)

如果你的nginx配置中开启了AllowOverride All(不推荐生产环境使用),可以修正.htaccess的正则错误:

DirectoryIndex index.php
RewriteEngine On

# 排除静态资源和index.php,修正原正则中的空格错误
RewriteCond $1 !^(index\.php|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico|.*\.swf)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

4. 验证修复效果

完成配置后,测试/verify/your_token这类API路径,应该能正确路由到User控制器的verify方法,参数也能正常接收。


额外提示

  • CodeIgniter 2.1.4是多年前的老旧版本,存在安全漏洞,建议后续逐步迁移到更高版本(如CI3或CI4)
  • CI2.1.4官方仅支持到PHP 5.6,在PHP 7.1下可能存在兼容性问题,若出现奇怪报错,可尝试降级PHP版本
  • 纯API服务无需加载视图,直接在控制器中用echo json_encode($response_data);输出JSON响应即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:59:51