【问题标题】:Code-igniter controllers file name can not start with capital letterCode-igniter 控制器文件名不能以大写字母开头
【发布时间】:2016-08-15 20:26:56
【问题描述】:

我之前用小写的控制器文件名,

但是,最近将文件移动到其他需要控制器名称以大写开头的服务器

==========================================

这里是重命名示例:

文件名: Home.php

$route['default_controller']: "home";

链接: http://example.com/index_folder/

===========================================

显示错误

Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.

当我将路线更改为

$route['default_controller']:“首页”;

它仍然显示相同的错误,

只有我去才会成功

http://example.com/index_folder/Home/

如何解决这个问题?感谢您的帮助

更新

这是 htaccess 文件,位于项目文件夹的根目录:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

重命名的原因是如果我的Controller是小写的,新服务器似乎有问题

【问题讨论】:

标签: php codeigniter path routes frameworks


【解决方案1】:

Linux 区分大小写,请保持文件名和类名相同,然后重试。它会起作用的。

相同的代码在 Windows 上可以正常工作,但在 Linux 上会出现异常。

【讨论】:

  • 之前是文件名是小写字母,控制器中的类名是大写字母,不匹配但工作至今,很奇怪
  • @user782104 如果 Home.php 正确,请尝试使用大写作为文件名,并使用大写作为类名,例如 Homecontroller。我曾经将 CI 上传到命名空间,但他们的服务器无法识别驼峰类名“HomeController”。
【解决方案2】:

根据Documentation

class Home extends CI_Controller {

        public function index()
        {
                echo 'Hello World!';
        }
}

然后将文件保存到您的 application/controllers/ 目录。

重要:-

该文件必须名为“Home.php”,大写“H”。

现在使用类似于以下的 URL 访问您的网站:

example.com/index.php/home/

可以告诉 CodeIgniter 在 URI 不存在时加载默认控制器,就像只请求您的站点根 URL 时的情况一样。

要指定默认控制器,请打开您的 application/config/routes.php 文件并设置此变量:

$route['default_controller'] = 'home';

其中“home”是您要使用的控制器类的名称。

如果您现在加载主 index.php 文件而不指定任何 URI 段,您将默认看到“Hello World”消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多