关于静态页面的CodeIgniter教程

时间:2014-01-08 11:42:55

标签: php codeigniter static

我开始在http://ellislab.com/codeigniter%20/user-guide/tutorial/static_pages.html上尝试第一个教程示例。

我总是遇到Page Not Found问题! 我已经阅读了很多关于解决问题的文章。但是我在不同的论坛上尝试解决方案的频率并不重要,它不起作用!

有人可以告诉我我的错误在哪里吗?

所以这些是我试过的文件:

我的routes.php在application / config

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

我在应用程序/控制器中的pages.php

<?php
   class Pages extends CI_Controller{
    public function view($page = "home")
    {
      if ( ! file_exists('application/views/pages/'.$page.'.php'))
      {
        // Whoops, we don't have a page for that!
        show_404();
      }

      $data['title'] = ucfirst($page); // Capitalize the first letter

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

我的home.php和about.php在 application / views / pages / 上 header.php和footer.php在 application / views / templates /

非常感谢!

6 个答案:

答案 0 :(得分:0)

将文件存在或不存在条件,它将起作用,因为您检查的不是文件,而只是要路由到的URL。所以很明显,它总会返回假,这将导致你的工作失败。

答案 1 :(得分:0)

application / config / routes.php

尝试更改

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

$route['default_controller'] = 'pages/views';
$route['404_override'] = '';

希望它有效。虽然为我工作。

答案 2 :(得分:0)

尝试将 /application/config/routes.php 中的代码更改为:

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

CodeIgniter逐行读取代码,因此选择在您创建的页面之前显示404页面。

答案 3 :(得分:0)

请务必严格遵守指示。我遇到了同样的问题并寻找解决方案。只有在阅读了其中一些答案后,才意识到我没有在templates目录中创建pagesviews子目录。当你到达static pages教程的末尾时,你应该有如下结构:

/views/
   /templates/
     header.php
     footer.php
   /pages/
     about.php
     home.php

答案 4 :(得分:0)

首先运行此

$route['default_controller'] = 'welcome';
$route['404_override'] = '';

然后试试这个

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

我有同样的问题,但没有解决。

答案 5 :(得分:0)

在项目的根目录中创建一个.htaccess文件,并添加以下代码

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]