【问题标题】:CodeIgniter upgrade from 2.2.0 to 3.0.x: Only the default controller is loadingCodeIgniter 从 2.2.0 升级到 3.0.x:仅加载默认控制器
【发布时间】:2015-12-30 22:05:01
【问题描述】:

我通常不会在网络上发布消息寻求帮助,但我觉得我已经尝试了所有方法并且我被卡住了。

我想将 CodeIgniter 从 2.2 版升级到 3.0.3 版(我也尝试过 v3.0.2),并遵循了相应的 guide on codeigniter.com。但是现在,无论 url 是什么,都只加载了默认控制器。

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

  • htaccess
  • 应用程序/配置/配置文件
  • 应用程序/配置/路由文件
  • 文件名(控制器、模型...)的新 Ucfirst 规则

但我还是没有办法……

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

一定是路由问题...

这是我做过的一些测试: Table of tests

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

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

这是我的“应用程序/配置/路由”文件:

$route['default_controller'] = '仪表板'; $route['404_override'] = 'auth/e404'; $route['translate_uri_dashes'] = 假;

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

谢谢!


解决方案

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

【问题讨论】:

    标签: php .htaccess codeigniter routing wamp


    【解决方案1】:

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

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

    试试这个

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

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

    【讨论】:

    • 感谢您的回答。我没有在“应用程序/配置/路由”文件中指定路由。我只使用 $route['default_controller']、$route['404_override'] 和 $route['translate_uri_dashes'] 这 3 行。这与原始文件相同。所以我尝试添加“ $route['notes'] = 'notes'; ”和“ $route['notes'] = 'notes/index'; ”但这似乎并没有改变任何东西...... :- (
    • 我认为 base_url 是正确的。它正在使用 2.2 版。我尝试使用绝对 url 而没有 url,结果是一样的。您可以在“测试表”中查看详细信息。
    • 尝试上传一个全新的codeigniter 3副本。如果你得到欢迎页面,然后尝试添加一个控制器。如果可行,那么您的升级有问题。
    • 谢谢。我尝试添加一个控制器,发现一个奇怪的错误:“uri_string()”未定义。我将它用于安全重定向。我发现有一个问题,因为我的网址大部分时间都有查询“?param =”。解决方案是更改“$config['enable_query_strings'] = TRUE;”到“$config['enable_query_strings'] = FALSE;”在“application/config/config.php”文件中......无论如何,谢谢你,因为你让我走上了正确的轨道:-)
    【解决方案2】:

    在 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 override 不能在子文件夹中。

    改变

    $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';
    

    【讨论】:

    • 感谢您的回答。我试过了,但这不起作用。一定有什么我想念的......它正在杀死我:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多