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

时间:2015-12-30 22:05:02

标签: php .htaccess codeigniter routing wamp

我通常不会在网上发布消息以获得帮助,但我觉得我已经尝试了所有内容而且我被卡住了。

我想将CodeIgniter从2.2版升级到3.0.3版(我也尝试过v3.0.2),然后我跟着相应的guide on codeigniter.com。但现在,只有默认控制器被加载,无论网址如何。

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

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

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

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

这必须是路由问题......

以下是我所做的一些测试: Table of tests

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

    
    RewriteEngine On

    #Checks to see if the user is attempting to access a valid file,
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    #Enable access to the images and css folders, and the robots.txt file
    RewriteCond $1 !^(index\.php|public|images|robots\.txt|css)
    RewriteRule ^(.*)$ index.php/$1 [L]
    

这是我的“application / config / routes”文件:

    $route['default_controller'] = 'dashboard';
    $route['404_override'] = 'auth/e404';
    $route['translate_uri_dashes'] = FALSE;

任何帮助将不胜感激: - )

谢谢!

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

2 个答案:

答案 0 :(得分:0)

在codeigniter 3 wamp

我使用这个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';

答案 1 :(得分:0)

尝试将索引方法放在路径中,例如代替此

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

试试这个

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

如果这不起作用,您能确认在application / config / config.php中设置了正确的基本网址吗?