在codeigniter中路由静态页面

时间:2017-12-28 19:05:50

标签: php codeigniter routing

我是PHP和CodeIgniter的新手,我在CodeIgniter应用程序中设置静态页面的路由时遇到了问题。

我有ciblog/pages/views/about并且它有效 我想将其更改为ciblog/about 我已经在routes.php中$route['(:any)'] = 'pages/view/$1';
它在浏览器中说不起作用:

  

页面未找到..

请帮助我,我想学习如何设置静态页面....

这是routes.php

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


    $route['default_controller'] = 'welcome';
    $route['(:any)'] = 'pages/view/$1';
    $route['404_override'] = '';
    $route['translate_uri_dashes'] = FALSE;
    ?>

这是我的控制器

    <?php
        class Pages extends CI_Controller{
            public function views($page = 'home'){
                if(!file_exists(APPPATH.'views/pages/'.$page.'.php')){
                    show_404();

                                                                    }
                $data['title'] = ucfirst($page);

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


                                        }


?>

这里是.htaccess

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

2 个答案:

答案 0 :(得分:0)

它会起作用,如果你的控制器是...... 这是最简单的裸骨选项。

class Pages extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->load->view('welcome_message');
    }

    public function view($page) {
        $this->load->view($page);
    }
}

view方法接受参数。

当然,您需要检查视图文件是否存在等,并采取相应的措施。

<强>更新 既然你已经展示了你的控制器,我可以看到你指的是你的路线中的视图但是你控制器方法被称为视图(添加了s)。

他们必须是一样的。

因此,最简单的方法就是改变

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

to(通过向视图添加s,使其与控制器方法相同)

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

或者您只需将方法名称从视图更改为视图。

你的选择!

答案 1 :(得分:0)

假设“about”页面由页面控制器的view方法提供,

$route['about'] = 'pages/view/about';