チュートリアルによると、application/controllers/pages.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('templates/nav', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/aside_right', $data);
$this->load->view('templates/bottom', $data);
}
}
これは「ホーム」ページで機能しますが、たとえば、views/pages/about を呼び出すことができないようです。
aboutページ用に別のコントローラーを作成しようとしました。それは機能しますが、やや間違っているように感じます。
アプリケーション/コントローラー/about.php
class About extends CI_Controller {
public function index()
{
$this->load->view('templates/header');
$this->load->view('templates/nav');
$this->load->view('pages/about');
$this->load->view('templates/aside_right');
$this->load->view('templates/bottom');
}
}
htaccess ファイルまたは routes ファイルにも問題があります。上記の About-controller では、domain.com/index.php/about と入力することによってのみページにアクセスできます。domain.com/about などでお願いします。
これは私のroutes.phpのようなものです:
$route['about'] = 'about';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
私のhtaccess:
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]