我遇到了路由問題。我的默認控制器(mysite.com)可以工作,但如果我嘗試其他任何東西(例如mysite.com/dashboard),它將轉到基於404的服務器,而不是CodeIgniter。這非常令人困惑,因爲目前我的routes.php文件中只有2個路徑。這裏是我的routes.php文件文件的非註釋的部分:CodeIgniter路由不起作用
$route['404_override'] = '';
$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';
我控制器位於/application/controllers/pages.php。
我不認爲它的.htaccess問題(因爲它可以得到的默認控制器),但這裏是我的.htaccess文件:
RewriteEngine On
RewriteCond $1 !^(index\.php|styles|scripts|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1
#<IfModule mod_gzip.c>
# mod_gzip_on Yes
# mod_gzip_dechunk Yes
# mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
# mod_gzip_item_include handler ^cgi-script$
# mod_gzip_item_include mime ^text/.*
# mod_gzip_item_include mime ^application/x-javascript.*
# mod_gzip_item_exclude mime ^image/.*
# mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
#</IfModule>
編輯
這裏是頁面控制器:
<?php
class Pages extends CI_Controller {
public function __construct()
{
//Construct it's parent
parent::__construct();
//Check login
//$this->load->model('pages_model');
//$this->pages_model->getLoginStatus();
}
public function view($page = 'dashboard')
{
//If the file doesn't exist
if (! file_exists('/var/www/vhosts/mysite/httpdocs/library/application/views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
//Load all necessary views
$this->load->view('templates/head', $data);
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
}
?>
愚蠢的問題,但方法'視圖'確實存在的頁面控制器? – Rooneyl
是的,它是頁面類中唯一的方法。我將在上面的代碼中添加該類。 –
是否因爲您已將您的默認控制器聲明爲控制器/方法,而不僅僅是控制器?你應該在頁面控制器中有一個index()方法,當控制器被調用時不會有額外的段。 – Rooneyl