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

CodeIgniter路由无响应求助:请求URL返回404且显示目录列表

这种情况我在维护老CodeIgniter项目时碰到过好多次,结合你说的同服务器上另一个未修改的CI项目能正常运行的前提,问题大概率出在这个项目本身的配置、重写规则或者权限上,按优先级给你列几个排查方向:

1. 先检查URL重写规则(.htaccess 或 Nginx配置)

看到浏览器显示目录列表,第一反应就是服务器没有把请求转发到CI的index.php入口文件。

  • 先看项目根目录有没有.htaccess文件,标准的CI重写规则应该是这样的:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

如果文件不存在,直接新建一个;如果存在,对比一下内容是否正确,有没有被误修改。

  • 如果你用的是Nginx服务器,检查对应站点的配置文件,确保有类似这样的路由转发规则:
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

虽然同服务器其他项目正常,但也不排除这个项目的虚拟主机配置被单独改了。

2. 核对CodeIgniter核心配置

打开application/config/config.php,重点检查这几个关键项:

  • $config['base_url']:必须和你访问的URL完全匹配,比如http://yourdomain.com/,结尾的斜杠不能省略。如果留空的话,有些服务器环境会导致路由解析失败。
  • $config['index_page']:应该设置为空字符串'',这样才能通过重写规则隐藏index.php。如果这里填了index.php,虽然能访问,但重写规则失效时就会出问题。
  • $config['uri_protocol']:这个是重灾区!不同服务器环境对这个配置的要求不一样,默认的AUTO有时候会失效。你可以试试改成REQUEST_URI或者PATH_INFO,直接抄同服务器正常CI项目的这个配置值也行,大概率能解决问题。
3. 检查目录权限和文件完整性
  • CI需要application/cache和application/logs目录有写入权限,一般设置为755或者777(根据服务器用户组调整)。如果权限不足,CI无法初始化缓存或日志,可能导致路由逻辑直接崩溃。
  • 对比同服务器正常的CI项目,检查这个项目的system目录文件是否完整,有没有被误删或者修改过核心文件。老项目很容易出现有人乱改核心代码的情况。
4. 确认默认控制器和路由配置
  • 打开application/config/routes.php,检查$route['default_controller']是否设置正确,比如默认的'welcome'要对应application/controllers/Welcome.php文件,而且类名必须和文件名一致(CI对大小写敏感,比如文件名是Welcome.php,类名就得是Welcome)。如果默认控制器的文件名或类名写错,访问主URL就不会调用到控制器。
  • 检查自定义路由有没有语法错误,比如正则表达式写错、路由规则冲突,导致所有请求都匹配不到正确的控制器。
5. 检查服务器的目录索引设置

如果浏览器显示目录列表,说明服务器的默认索引页没把index.php排在前面。虽然同服务器其他项目正常,但也有可能这个项目的虚拟主机配置被单独修改,覆盖了全局的DirectoryIndex(Apache)或index(Nginx)设置,确保配置里包含index.php。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:52:58