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

CodeIgniter控制器仅index()可用,其他函数返回404 Not Found问题

解决Nginx下CodeIgniter控制器方法404问题

看起来你遇到的是Nginx环境下CodeIgniter(从URL结构判断大概率是这个框架)的URL路由问题,别着急,咱们一步步来排查解决:

1. 检查Nginx的Rewrite规则(最关键)

Nginx不像Apache有.htaccess自动处理URL重写,必须在server配置块里手动添加规则,确保所有请求都能转发到index.php入口文件。

打开你的Nginx站点配置文件(通常在/etc/nginx/sites-available/或/etc/nginx/conf.d/目录下),修改或添加对应的server块配置:

server {
    listen 80;
    server_name 163.XX.XXX.XX;
    # 替换成你的API项目实际根目录,比如/var/www/html/API
    root /path/to/your/API/project;
    index index.php index.html;

    # 处理API路径下的所有请求
    location /API {
        # 先尝试访问静态文件,找不到就转发到index.php
        try_files $uri $uri/ /API/index.php$is_args$args;
    }

    # PHP处理规则,确保PHP文件能被正确解析
    location ~ \.php$ {
        # 根据你的PHP版本和FPM配置调整,比如php8.0-fpm.sock
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

修改完后,记得重载Nginx配置让它生效:

sudo nginx -s reload

2. 调整CodeIgniter的配置

打开项目的application/config/config.php文件:

  • 确保$config['base_url']设置正确:
    $config['base_url'] = 'http://163.XX.XXX.XX/API/';
    
  • 把$config['index_page']设为空字符串,让框架自动去掉URL里的index.php:
    $config['index_page'] = '';
    
  • 你已经设置了$config['uri_protocol'] = 'REQUEST_URI';,这个是正确的,无需修改。

3. 验证控制器规范

虽然你说类名大小写一致,但再确认下:

  • 控制器文件名必须是首字母大写,比如ApiController.php(注意后缀是.php)
  • 类名和文件名完全一致,且继承CI_Controller:
    class ApiController extends CI_Controller {
        public function index() {
            echo "Hello World";
        }
        public function getTs() {
            echo "Hello again";
        }
    }
    

4. 测试两种URL格式

现在试试访问这两个URL:

  • 不带index.php的:http://163.XX.XXX.XX/API/ApiController/getTs
  • 如果还是有问题,先测试兼容模式:http://163.XX.XXX.XX/API/index.php?/ApiController/getTs

如果兼容模式能正常返回,说明就是Nginx的rewrite规则没配置对,回到第一步重新检查规则即可。要是还有疑问,也可以看看Nginx的错误日志(/var/log/nginx/error.log),里面会有更详细的错误信息帮你定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:30