访问子文件夹 codeigniter 中的控制器

accessing controller in subfolder codeigniter

刚下载CI2.2,将文件夹重命名为Test1,复制到xampp.

的htdocs文件夹中

通过访问 http://localhost/Test1 测试了站点,它启动了欢迎消息。现在向控制器 ("admin") 添加了一个文件夹,并在其中添加了一个控制器 (home.php)。所以结构是:

controllers
    --> admin
          --> home.php
    --> index.php
    --> welcome.php

home.php中的代码是

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
    public function index()
    {
        echo 'Hello';
    }
}

当我尝试访问 http://localhost/Test1/admin/homehttp://localhost/Test1/admin/home/index 时,它说找不到对象(404 错误)。

我还尝试将 $route['admin'] = "admin/home"; 添加到 application\config\routes.php 以便我可以作为 http://localhost/Test1/admin 访问,但没有用。我是否缺少设置?

创建一个文件 htaccess.htaccess 并在其中添加以下代码。将其保存在您的 Test1 文件夹中

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /Test1/index.php/[=10=] [PT,L] 
RewriteEngine on
RewriteCond  !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L,QSA]

您应该创建 .htaccess 文件并粘贴上面提到的行。并将该文件放入您的项目文件夹(Test1)。

您是否配置了 CodeIgniter,使其可以 运行 而无需 index.php ? 否则正确的 url 应该是这样的:

http://localhost/index.php/admin/home

   http://localhost/index.php/admin/home/index 

... 与 CI 几乎相同。

如果您尝试上述方法之一 url 并且收到欢迎消息,那真是个好消息!这是解决方案:您必须告诉 CI 不要在 URL.

中使用 index.php
  1. 打开您的 .htaccess 或在您的网站根目录中创建一个,

  2. 将下一行放入其中:

    RewriteEngine on
    RewriteCond !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ /index.php/ [L]

  3. 检查您是否删除了在 config/routes 中为测试添加的行。php。

  4. 尝试使用相同的 URL 但没有 index.php.

    访问您的管理文件夹

    告诉我们发生了什么。