我的服务器上的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';
答案 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