CodeIgniter从2.2.0升级到3.0.x:只有默认控制器正在加载


CodeIgniter upgrade from 2.2.0 to 3.0.x: Only the default controller is loading

我通常不会在网上发布消息寻求帮助,但我觉得我已经尝试了一切,但我被卡住了。

我想将CodeIgniter从2.2版升级到3.0.3版(我也尝试了3.0.2版),并遵循了CodeIgniter.com上的相应指南。但现在,无论url如何,都只加载默认控制器。

我在网上搜索过,发现它可能来自:

  • htaccess
  • application/config/config文件
  • application/config/routes文件
  • 文件名(控制器、模型…)的新Ucfirst规则

但我仍然没有解决方案。。。

  • "应用程序/控制器"中的文件都是Ucfirst
  • 之前一切都很好(2.2版),所以应该正确配置WAMP(启用mod_rewrite等)。此外,我已经尝试并成功加载了CodeIgniter3的干净实例
  • 模型、控制器和视图加载正确,我可以更改我的默认控制器,它将加载正确的视图(由控制器和模型完成请求)。但它只加载默认的控制器,无论url是什么(在浏览器中)。即使它不存在,我也从来没有404页。除非我指定了不正确的"default_controller"(在文件"routes.php"中)。

这一定是一个路由问题。。。

以下是我所做的一些测试:测试表

这是我的htaccess文件(我也在网上尝试过其他文件,结果是一样的):

重写引擎打开#检查用户是否试图访问有效文件,重写结束%{REQUEST_FILENAME}-f重写结束%{REQUEST_FILENAME}-d#启用对图像和css文件夹以及robots.txt文件的访问重写结束$1^(index.php|public|images|robots''.txt|css)重写规则^(.*)$index.php/$1[L]

这是我的"application/config/routes"文件:

$route['default_controller']="仪表板";$route['404_override']='auth/e404';$route['translate_uri_dashe']=FALSE;

如有任何帮助,我们将不胜感激:-)

谢谢


解决方案

$config['enable_query_strings']在文件"application/config/config.php"中设置为"TRUE"。将其设置为"FALSE"解决了问题。这么简单

尝试将index方法放在路由中,例如,而不是这个

$route['blog'] = 'blog';

试试这个

$route['blog'] = 'blog/index';

如果这不起作用,你能确认你已经在application/config/config.php中设置了正确的基本url吗?

在代码点火器中3瓦

我使用这个htaccess

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index'.php|images|robots'.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

有了您的错误404,无法在子文件夹中翻越。

更改

$route['404_override'] = 'auth/e404';

$route['404_override'] = 'e404';

在config.php 上

$config['base_url'] = 'http://localhost/your_project/';
// You can leave base url blank but not recommended because when you try to submit forms make cause issue.
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';