You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

本地调用CodeIgniter项目API目录时出现404未找到错误

本地调用CodeIgniter项目API目录时出现404未找到错误

兄弟,碰到这种API调用404的情况太普遍了,我给你捋几个最容易出问题的排查点,一步步来排查:

首先先把你遇到的问题信息贴出来,方便对照:

请求的URL:localhost:82/macroflex/app/v1/api/login
错误提示:

<h1>Not Found</h1>
    The requested URL was not found on this server.

    <hr>
    Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.1.25 Server at localhost Port 82

1. 先确认API文件的实际路径是否匹配

CodeIgniter的控制器路径规则是application/controllers/[子目录]/[控制器类名].php,对应的方法是类里的public方法:

  • 你这个URL里的app/v1/api/login,对应的控制器应该是macroflex/application/controllers/v1/Api.php,而且里面必须有一个login()方法,并且是public权限的。
  • 要是控制器文件名或者方法名写错了(比如大小写不对,哪怕Windows系统也最好统一规范),直接就会触发404。

2. 检查URL重写是否配置正确

很多时候404是因为没去掉URL里的index.php,或者Apache的rewrite模块没开:

  • 先确认Apache的rewrite模块是否启用:打开Apache的httpd.conf,找到LoadModule rewrite_module modules/mod_rewrite.so这一行,把前面的#去掉(如果有的话),然后重启Apache。
  • 然后看项目根目录(也就是macroflex文件夹)下有没有.htaccess文件,没有的话新建一个,内容用CodeIgniter标准的重写规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
  • 还要确保Apache允许这个目录使用.htaccess:在httpd.conf里找到对应项目目录的<Directory>块,把AllowOverride设为All,比如:
<Directory "你的本地项目路径/macroflex">
    AllowOverride All
    Require all granted
</Directory>

3. 检查CodeIgniter的核心配置

打开application/config/config.php

  • 确认$config['base_url']设置正确,应该是http://localhost:82/macroflex/(注意末尾的斜杠)。
  • 确认$config['index_page']的值是空字符串"",这样才能让URL重写生效,去掉index.php

4. 排查自定义路由是否冲突

如果你在application/config/routes.php里设置了自定义路由规则,要检查有没有和/app/v1/api/login冲突的规则,或者有没有写错路由映射(比如把login映射到了不存在的控制器/方法)。

按照上面的步骤一步步排查,应该能找到问题所在。

备注:内容来源于stack exchange,提问作者jvk

火山引擎 最新活动