如何在服务器上的子文件夹中使用codeigniter?

时间:2016-12-20 10:20:22

标签: php codeigniter

我的服务器上的public_html文件夹下有两个codeigniter安装。一个直接在public_html下,另一个在public_html / posts_receive下。

public_html下的实例工作正常,但当我尝试访问public_html / posts_receive中的codeigniter控制器时,它显示:

  

未找到404页面

     

尝试了网址http://www.example.com/posts_receive/index.php/dashboard

要解决此问题,我在public_html / posts_receive下添加了一个.htaccess文件,其中包含以下内容:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /posts_receive
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>

我的控制器名为 dashboard.php ,其中包含以下内容:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Dashboard extends CI_Controller {


    public function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form', 'url'));

        $this->load->library("pagination");
    }

    public function index() {
        $config = array();

        $data['link_sel']='dashboard';
        $data['stats']=$this->fetch_stats();
        $this->load->view("header_inc", $data);
        $this->load->view("dashboard", $data);
        $this->load->view("footer_inc", $data);
    }   
}
?>

config.php 包括:

$config['base_url'] = 'http://www.example.com/posts_receive/';
$config['index_page'] = 'index.php';

2 个答案:

答案 0 :(得分:2)

您应该从一个CodeIgniter基础运行这两个应用程序。您的application文件夹中将有2个子文件夹。请查看文档:{​​{3}}

从那里开始,您可以创建与posts_recieve文件夹中的根目录相同的index.php文件,并将其指向正确的应用程序目录。这就是我设法做到的方式。否则,root中的CodeIgniter实例会认为您正在导航到名为posts_recieve的控制器,该控制器在该应用程序中不存在。希望这会有所帮助。否则,只要问清楚什么不清楚。

答案 1 :(得分:0)

.htaccess 内,不需要RewriteBase /posts_receive部分。

RewriteRule ^(.*)$ index.php?$1 [L]

应该成为

RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

<IfModule mod_rewrite.c>是服务器配置条件。这意味着您应该在Web服务器上安装并激活 mod_rewrite 模块,以使这些设置正常工作。)

您可以将空$config['index_page']留在 config.php

$config['index_page'] = '';

你可以在没有 index.php 部分的情况下调用控制器:

http://www.example.com/posts_receive/dashboard