CodeIgniter3でviewフォルダを変更してhtmlを読み込む

CodeIgniter3でviewフォルダを変更してhtmlを読み込む時の覚え書き。
publicフォルダが公開フォルダで、そこにhtmlファイルが入っていることが前提。

viewフォルダを変更する

public/index.phpファイルを開き、$view_folderの値を設定する。
publicフォルダをviewフォルダにするには以下の通り。

 $view_folder = dirname(__FILE__);

controllerを追加する

htmlファイルが存在する場合、htmlを読み込むようなコントローラーを作成する。

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

class Pages extends CI_Controller {

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

  public function index($page = 'index')
  {
    $this->load->view($page.'.html');
  }

  public function view($dir, $page)
  {
    if (!file_exists(FCPATH.$dir.'/'.$page.'.html')) {
      show_404();
    }
    $this->load->view($dir.'/'.$page.'.html');
  }
}

routes.phpを変更する

application/config/routes.phpに上で設定したコントローラーへのアクセスを追加する。

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

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

.htaccessファイルの設定について

.htaccessファイルで静的なファイル以外をindex.phpへリダイレクトするよう設定する。

RewriteEngine On
RewriteCond $1 !^(.+\.js$|.+\.css$|.+\.jpg$|.+\.png$|.+\.ico$)
RewriteRule ^(.*)$ index.php?/$1 [L]