CodeIgniter 404 Page 未找到,但为什么?

我正在将CodeIgniter用于两个应用程序(公共应用程序和管理应用程序)。文档结构的重要元素包括:

/admin
/admin/.htaccess
/admin/index.html
/application
/application/admin
/application/public
/system
.htaccess
index.php

/admin/.htaccess 文件如下所示:

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

/admin/index.php具有以下更改:

$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)

/application/admin/config/routes.php包含以下内容:

$route['default_controller'] = "welcome";
$route['admin'] = 'welcome';

欢迎是我的默认控制器。

当我调用域/管理员时,我收到404页面未找到错误。当我调用域/管理员/欢迎时,一切正常。在调试日志中,我收到以下错误消息:

DEBUG - 2010-09-20 16:27:34 --> Config Class Initialized
DEBUG - 2010-09-20 16:27:34 --> Hooks Class Initialized
DEBUG - 2010-09-20 16:27:34 --> URI Class Initialized
ERROR - 2010-09-20 16:27:34 --> 404 Page Not Found --> admin

奇怪的是,这个设置在我的本地MAMP安装(使用localdomain/admin/)上完美地工作,但是当我在“live”服务器上发布和测试它时,我只得到404错误。

有什么想法吗?我做错了什么?谢谢C。


答案 1

问题的原因是服务器正在使用 FastCGI 运行 PHP。

将配置更改为.php

$config['uri_protocol'] = "REQUEST_URI";

一切都很好。


答案 2

您可以尝试两种方法之一或两者的组合。

  1. 确保控制器的名称以大写字母开头。例如“Mycontroller.php”
  2. 如果您没有对路线进行任何更改,出于某种奇怪的原因,您可能必须在网址中包含大写字母。例如,如果您的控制器是“Mycontroller.php”,其中包含一个名为“testfunc”的函数,那么您的url将如下所示:“http://www.yourdomain/index.php/Mycontroller/testfunc”。请注意大写字母。(我假设您尚未添加 htaccess 文件来删除“索引.php”部分。如果有,只需将其从网址中删除即可。

我希望这可以帮助某人


推荐