基本上一个控制器(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大写控制器名称并忽略具有小写控制器名称的某些 URI(然后Apache尝试处理URI)。
任何想法为什么以及如何解决?
P.S。 - 是的,我确实在CI的论坛上发布了我的问题,但我没有运气帮助他们。我在Linux发行版(带LAMP的Ubuntu 10.10)上运行CodeIgniter 2.0.2。
答案 0 :(得分:1)
问题是重写条件语法是说不要使用i,c,j或u来路由BEGIN的文件夹而不是名称为IS i,c,j或u的文件夹。巧妙地,我的控制器名称没有加载开始于i(想法)和你(用户)。
我可以将我的静态文件夹重命名为全名(“uploads”而不是“u”)并更新重写条件并解决此问题,但我希望保持名称相同。任何人都碰巧知道重写条件的正确语法,以匹配确切的名称(而不是喜欢或开头)?
答案 1 :(得分:0)
检查你的控制器名称,人们(我发现)做的最常见的事情是复制他们的'主'控制器(比如topics.php)并将文件名重命名为whatever.php
他们开始开发,控制器名称保持'主题'。由于找不到控制器(不是实际文件)而抛出404
例如:
class Blog extends CI_Controller {...
如果上面的代码在一个名为stuff.php的文件中。如果您致电/stuff
答案 2 :(得分:0)
确保您的控制器也反映了文件名。
class User extends CI_Controller {
答案 3 :(得分:0)
在你的htaccess中......而不是
RewriteRule ^(.*)$ /index.php/$1 [L]
尝试
RewriteRule ^(.*)$ index.php/$1 [L]
并按照说明在您的CI配置集base_url
中(包括尾随/
!)
$config['base_url'] = 'http://www.site.com/';
应该这样做。