1

基本上一个控制器 (controller/topics.php, http://192.168.1.50/topics ) 像它假设的那样通过 CI 的 index.php 传递,而另一个 (controller/user.php, http://192.168.1.50/user ) 出于某种奇怪的原因根本没有通过(我在浏览器中收到 404 错误)。CodeIgniter 和/或 Apache2 正在做一些时髦的事情,我想不通:'.../user' 给了我 Apache 的 404 页面,但 '.../User' 给了我 CI 的 404 页面,这意味着 CI 使用大写控制器名称并忽略一些具有小写控制器名称的 URI(然后 Apache 尝试处理 URI)。

任何想法为什么以及如何解决?

PS - 是的,我确实在 CI 的论坛上发布了我的问题,但我没有得到他们的帮助。我在 Linux 发行版(带有 LAMP 的 Ubuntu 10.10)上运行 CodeIgniter 2.0.2。

4

4 回答 4

1

问题是重写条件语法是说不要路由以 i、c、j 或 u 开头的文件夹,而不是名称为 i、c、j 或 u 的文件夹。巧合的是,我没有加载的控制器名称以 i(想法)和 u(用户)开头。

我可以将我的静态文件夹重命名为其全名(“uploads”而不是“u”)并更新重写条件并解决此问题,但我想保持名称相同。任何人碰巧知道重写条件以匹配确切名称(而不是喜欢或开头)的正确语法?

于 2011-05-06T01:04:28.103 回答
0

我昨天遇到了类似的问题。默认控制器可以有一个大写的文件名,但任何其他控制器在大写时都会产生 404。这是在 MAMP 设置上。

确保您的控制器也反映文件名。

class User extends CI_Controller {
于 2011-05-04T18:32:33.460 回答
0

在你的 htaccess ... 而不是

RewriteRule ^(.*)$ /index.php/$1 [L]

尝试

RewriteRule ^(.*)$ index.php/$1 [L]

并按照说明在您的 CI 配置集中base_url(包括尾随/!)

$config['base_url'] = 'http://www.site.com/';

那应该这样做。

于 2011-05-05T17:25:44.013 回答
0

检查您的控制器名称,人们(我发现)做的最常见的事情是复制他们的“主”控制器(比如topics.php)并将文件名重命名为whatever.php

他们开始开发,控制器名称保持“主题”。由于找不到控制器(不是实际文件)而引发 404

前任: class Blog extends CI_Controller {...

如果上面的代码在一个名为 stuff.php 的文件中。如果您拨打电话,您将收到 404/stuff

于 2011-05-04T18:30:18.030 回答