为什么我必须在URL CodeIgniter中包含索引?

时间:2018-10-10 11:39:21

标签: php codeigniter routes

我已经创建了如下的控制器呼叫帖子

<?php

class Posts extends CI_Controller {

    public function index(){

        $data['title'] = 'Latest posts';

        $this->load->view('templates/header');
        $this->load->view('posts/index', $data);
        $this->load->view('templates/footer');
    }
}

我已经设置了如下路线

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

$route['default_controller'] = 'pages/view';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route['(:any)'] = 'pages/view/$1';
$route['posts'] = 'posts/index';

但是如果我转到网址http://localhost/Blog/posts,则会死于404页面错误

但是,如果我转到http://localhost/Blog/posts/index,效果很好

为什么我无法在第一个网址中使用它?我做错了什么,请帮我解决这个问题,我是Codeigniter的新手

2 个答案:

答案 0 :(得分:1)

类似Blog的子目录可能是您安装CodeIgniter的子目录。 CI会将所有传入的uri视为/controller/action/parameters,并尝试实例化相应的Controller类。如果是这种情况,它将尝试实例化名为Blog的控制器,但找不到它。

要解决此问题,您必须更新config.php并设置:

$config['base_url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/Blog/';

答案 1 :(得分:0)

在路由器中将$ route ['posts']更改为 $ route ['/ posts'] 或删除该路由器,因为索引方法将被默认调用。