【问题标题】:accessing controller in subfolder codeigniter访问子文件夹 codeigniter 中的控制器
【发布时间】:2015-03-01 12:04:36
【问题描述】:

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

【问题讨论】:

  • 你在配置文件中设置了base_url吗?
  • 使用这个 $config['base_url']= 'localhost/Test1';没有改变任何东西:(

标签: php codeigniter controller routes


【解决方案1】:

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

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

【讨论】:

  • 啊,这行得通。请对 htaccess 的所需配置有任何帮助吗?
  • 所以如果我在控制器中有 3 个模式文件夹,那么我必须添加 3 个 RewriteRule 吗? @Tariq
【解决方案2】:
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)。

【讨论】:

    【解决方案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. 尝试使用相同的 URL 但没有 index.php 访问您的管理文件夹。

      告诉我们发生了什么。

    【讨论】:

    • 感谢您的详细意见。设置htaccess后,它工作正常。不过,我已将 Tariq 的答案标记为他的快速反应和正确方向的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多