【问题标题】:Why do I have to include index in URL CodeIgniter?为什么我必须在 URL CodeIgniter 中包含索引?
【发布时间】:2019-03-15 07:36:29
【问题描述】:

我创建了一个控制器调用帖子,如下所示

<?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';

但如果我转到 url http://localhost/Blog/posts 它会因 404 页面错误而死

但是如果我去http://localhost/Blog/posts/index 它工作正常

为什么我不能让它在第一个 url 中工作?我做错了什么请帮我解决这个问题我是codeigniter的新手

【问题讨论】:

标签: php codeigniter routes


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2015-05-31
      • 2023-02-20
      • 1970-01-01
      • 2015-07-05
      • 2018-08-18
      • 1970-01-01
      相关资源
      最近更新 更多