我通常不会在网上发布消息寻求帮助,但我觉得我已经尝试了一切,但我被卡住了。
我想将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';