如何使用config.php中指定的base_url运行另一个控制器的功能

时间:2013-06-08 23:52:58

标签: php codeigniter config base-url

我在控制器welcome下面重定向到controllers/auth/login.php

中另一个控制器的功能
function __construct() {
    parent::__construct();

    $this->load->helper('url');
    $this->load->library('tank_auth');
}

function index() {
    if (!$this->tank_auth->is_logged_in()) {
        redirect('/auth/login');
    } else {
        $data['user_id']    = $this->tank_auth->get_user_id();
        $data['username']   = $this->tank_auth->get_username();
        $this->load->view('welcome', $data);
    }
}

此处为config.php

$config['base_url'] = '';
$config['index_page'] = 'index.php';

效果很好。但是当我在配置文件中将base_url指定为:

$config['base_url'] = 'http://localhost/cilog/';
$config['index_page'] = '';

Object not found。为什么会这样?但是当我将index_page指定为index.php时,它再次起作用。

1 个答案:

答案 0 :(得分:0)

我相信这是因为CodeIgniter处理它的URL的方式。我不确定为什么Codeigniter会这样做,但它们在URL中包含index.php

因此,您的网址看起来像http://localhost/cilog/index.php/auth/login

您可以重写.htaccess文件以删除index.php,将其放入:

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

并将$config['base_url']设置为"http://localhost/cilog/"

OR

同时指定$config['base_url']$config['index_page']

有关详细信息,请参阅此处:http://ellislab.com/codeigniter/user-guide/general/urls.html(删除index.php文件)