在Codeigniter中,有些URI通过index.php,有些则不通过&x27;T

在Codeigniter中,有些URI通过index.php,有些则不通过&x27;T,codeigniter,controller,uri,codeigniter-url,Codeigniter,Controller,Uri,Codeigniter Url,基本上,一个控制器(controller/topics.php,)会像其假定的那样通过CI的index.php,而另一个控制器(controller/user.php,)由于某种奇怪的原因根本无法通过(我在浏览器中遇到404错误)。CodeIgniter和/或Apache2正在做一些奇怪的事情,我不明白:“…/user”给了我Apache的404页,而“…/user”给了我CI的404页,这意味着CI获取带有大写控制器名的URI,忽略一些带有小写控制器名的URI(然后Apache尝试处理URI)

基本上,一个控制器(controller/topics.php,)会像其假定的那样通过CI的index.php,而另一个控制器(controller/user.php,)由于某种奇怪的原因根本无法通过(我在浏览器中遇到404错误)。CodeIgniter和/或Apache2正在做一些奇怪的事情,我不明白:“…/user”给了我Apache的404页,而“…/user”给了我CI的404页,这意味着CI获取带有大写控制器名的URI,忽略一些带有小写控制器名的URI(然后Apache尝试处理URI)

有什么想法为什么以及如何解决


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

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

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

例:
类博客扩展CI_控制器{…


如果上面的代码在一个名为stuff.php的文件中。如果你调用
/stuff
检查你的控制器名,你会得到一个404。人们(我发现)做的最常见的事情就是复制他们的“主”控制器(比如topics.php)并将文件名重命名为
whatever.php

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

例:
类博客扩展CI_控制器{…


如果上面的代码在一个名为stuff.php的文件中。如果你调用
/stuff
,你会得到一个404。我昨天遇到了一个类似的问题。默认控制器可以有一个大写文件名,但任何其他控制器都会在大写时生成一个404。这是在MAMP设置中

确保控制器也反映文件名

class User extends CI_Controller {

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

确保控制器也反映文件名

class User extends CI_Controller {

在您的htaccess中…而不是

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

试一试

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

并按照说明在CI配置集中
基本url
(包括尾随
/
!)

$config['base\u url']='http://www.site.com/“;


这样就可以了。

在您的htaccess中…而不是

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

试一试

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

并按照说明在CI配置集中
基本url
(包括尾随
/
!)

$config['base\u url']='http://www.site.com/“;


这应该可以做到。

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


我可以将静态文件夹重命名为其全名(“上载”而不是“u”),并更新重写条件并解决此问题,但我希望名称保持不变。任何人都知道重写条件的正确语法以匹配确切名称(而不是类似或以开头)?

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


我可以将静态文件夹重命名为其全名(“上载”而不是“u”),并更新重写条件并解决此问题,但我希望名称保持不变。任何人都知道重写条件的正确语法以匹配确切名称(而不是类似或以开头)?

这实际上是不正确的,您的控制器的首字母必须大写!您是对的。我指的是文件名,而不是实际声明的大写。很好。谢谢。是的,我的控制器也是大写的。“缩短的URL”是什么意思?你能发布你的.htaccess文件吗?那实际上是不正确的,你的控制器必须是大写的第一个字母!你是对的。我指的是文件名,而不是实际声明的大写。很好。谢谢。是的,我的控制器也是大写的。“缩短的URL”是什么意思?您可以发布您的.htaccess文件吗?是的,控制器名称与文件名匹配(文件名当然是小写)。是的,控制器名称与文件名匹配(文件名当然是小写)。另一个奇怪的事实是,“…/index.php/user”成功加载。因此,请预先设置所有控制器(评论,主页,主题,用户,欢迎)使用丑陋的'index.php/'成功加载(除了图像,css,js的链接现在断开),但是没有丑陋的'index.php/'只有一些控制器成功加载(主页,主题,欢迎).FRAK!!发布你的.htaccess文件内容(隐藏任何重要内容),还有你的route.config呢?-有与此问题相关的相关文件的相关片段(包括.htaccess和route config)。奇怪的是,“…/index.php/user”成功加载。因此,所有控制器(注释、主页、主题、用户、欢迎)都成功加载了丑陋的“index.php/”(除了图像、css、js的链接现在断开),但是如果没有丑陋的“index.php/”,只有一些控制器加载成功(home、topics、welcome)。FRAK!!发布你的.htaccess文件内容(隐藏任何重要内容),还有你的route.config呢-