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

时间:2015-01-03 11:29:53

标签: php codeigniter controller routes

刚刚下载了CI 2.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访问,但没有用。我错过了一个设置吗?

3 个答案:

答案 0 :(得分:3)

您是否配置了CodeIgniter,以便它可以在没有index.php的情况下运行? 否则,正确的URL应该是这样的:

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

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

......对于CI来说,女巫几乎是一样的。

如果您尝试使用上述网址之一并收到欢迎信息,那就是一个好消息!以下是解决方案:您必须告诉CI不要在您的URL中使用index.php。

  1. 打开您的.htaccess或在您的网站根目录中创建一个
  2. 将下一行放入其中:

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

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

  4. 尝试使用相同的网址但不使用index.php访问您的管理员文件夹。

    告诉我们什么是锣。

答案 1 :(得分:2)

创建一个文件htaccess.htaccess并通过以下代码。将其保存在Test1文件夹中

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /Test1/index.php/$0 [PT,L] 

答案 2 :(得分:1)

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

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