【问题标题】:CodeIgniter server based 404基于 CodeIgniter 服务器的 404
【发布时间】:2013-02-21 06:40:10
【问题描述】:

我已经在我的本地 xampp 服务器上的目录中安装了 CodeIgniter:

localhost/CI/

当我直接访问该目录时,我会看到主页,但是当我尝试访问任何其他页面时,我会得到一个基于服务器的 404 页面。我没有看到 CI 404。

我已经尝试过使用uri_protocol,但我无法让它工作。有什么线索吗?

routes.php

$route['page/create'] = 'page/create';
$route['(:any)'] = 'page/view/$1';
$route['default_controller'] = 'page/view/hello-world';
$route['404_override'] = '';

页面控制器

class Page extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('page_model');
    }

    public function view($slug)
    {
        $data['page'] = $this->page_model->get_page($slug);

        if (empty($data['page']))
        {
            show_404();
        }

        $data['title'] = $data['page']['title'];

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

    public function create()
    {
        $this->load->helper('form');
        $this->load->library('form_validation');

        $data['title'] = 'Create a new page';

        $this->form_validation->set_rules('title', 'Title', 'required');

        if ($this->form_validation->run() === FALSE)
        {
            $this->load->view('templates/header', $data);   
            $this->load->view('page/create');
            $this->load->view('templates/footer');
        }
        else
        {
            $this->page_model->set_page();
            $this->load->view('page/success');
        }
    }
}

“世界你好!”显示很好,但我无法让创建页面工作。视图位于views/page/create.php

【问题讨论】:

  • 你使用 mod_rewrite 吗?如果是这样,您的 .htaccess 是什么样的?你能以这种格式访问其他页面吗:localhost/CI/index.php/controller/method
  • 如果我尝试访问该格式的其他页面,我会收到 CI 404 错误。我在上面的问题中添加了更多内容。
  • 所以没有mod_rewrite,因为第二种格式有效。我们需要更多代码来查看。 routes.php,返回 404 的控制器代码?
  • 你的控制器叫什么名字?
  • @FabioAntunes "Pag" 我在上面添加了代码

标签: codeigniter xampp http-status-code-404


【解决方案1】:

xampp !!!!是模式rewite无法正常工作的问题..将apache作为独立安装,添加php和mysql,您可以以任何会导致其他错误的方式正常工作

$route['default_controller'] = 'page/view/hello-world';

改成

$route['default_controller'] = 'page';

然后把它移到顶部,这样你就有了

$route['default_controller'] = 'page';
$route['404_override'] = '';
    $route['page/create'] = 'page/create';
$route['(:any)'] = 'pages/view/$1';

在 routes.php 中事情的顺序很重要

并在 page.php 控制器中添加一个函数 index()

【讨论】:

  • 我已经完成了关于我的安装的 CodeIgniter 教程,并且效果很好。
  • 在普通的 apache 或 websterver 上尝试一下,因为无论如何,如果你要在实时服务器上发布它,最好在真正的服务器上开发,而不是 xampp,因为我喜欢的模板有任何问题您的代码加载 3 个视图您最好尝试使用部分 codeigniter.tv/a-15/Codeigniter-layouts-and-partial-views
  • 感谢链接,我去看看,听起来很有希望。
  • @user2019515 我更新了帖子,也许这会有所帮助,请同时发送 config.php
  • 你介意加入这个聊天吗?所以我们可以交谈并保持干净chat.stackoverflow.com/rooms/25691/…
猜你喜欢
  • 2012-07-10
  • 2015-06-07
  • 2016-05-10
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
相关资源
最近更新 更多