我有一个默认的控制器集:
$route['default_controller'] = "Home";
但是,当我转到http://mydomain.com/
时,它会显示404 Page Not Found,但是当转到http://mydomain.com/Home
时,控制器会正常加载。可能是什么问题呢?我几个小时都在挣扎着。如果需要,我的htaccess是posted here。谢谢!
答案 0 :(得分:2)
原来我的问题有点无关。我不得不将我的默认控制器php文件重命名为小写,控制器类名称重命名为小写,一切都开始工作。当CI查找默认控制器文件时,它会以小写形式搜索文件;如果我将控制器文件命名为“Home.php”而不是“home.php”,则CI会在Linux上错过它(因为Linux文件系统区分大小写)。
答案 1 :(得分:1)
您的路由没有问题,问题在于您的htaccess文件。尝试删除
ErrorDocument 404 /index.php
答案 2 :(得分:1)
你可能有一些.htaccess问题。 托盘这样:
的.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
的config.php
$config['base_url'] = 'www.homepage.com';
$config['index_page'] = '';
routes.php文件
$route['default_controller'] = "yourcontrollername";
$route['404_override'] = '';
答案 3 :(得分:0)
没有任何其他信息&您的配置/控制器中的代码,我建议检查config / config.php这些(在正常情况下都应为空):
$config['base_url'] = '';
$config['index_page'] = '';
IIRC,我看到过类似的问题,它与这些配置变量有关。希望这对你有所帮助。
答案 4 :(得分:0)
我确定这个.htaccess解决了所有ubuntu用户...
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
答案 5 :(得分:0)
我设置了默认控制器:
$route['default_controller'] = "home";
对我有用。