我使用CodeIgniter和Nginx。 我已經從CodeIgniter 2.2.6升級到3.1.4,遵循所有更新日誌和升級說明。一切正常,但默認的控制器,即http://francescoruvolo.it(或甚至http://francescoruvolo.it/index.php)顯示404頁面,但所有其他路由規則的作品,我可以加載其他控制器。CodeIgniter不會在'/'上加載默認控制器
這裏是我的routes.php
:
$route['(it|en)/contact/check_form'] = "Email/validate_form/$1";
$route['(it|en)/contact'] = "Email/show_form/$1";
$route['(it|en)/(:any)'] = "Pages/show/$1/$2";
$route['(it|en)'] = "Pages/show/$1";
$route['default_controller'] = "Pages/show/";
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
我也試圖發表評論的所有路線,但還是默認的一個被忽略。不過,如果我去http://francescoruvolo.it/Pages/show或http://francescoruvolo.it/en,控制器加載得很好,它的工作原理。很多人都遇到類似的問題,因爲他們錯過了爲類實施大寫名稱的部分,但事實並非如此,因爲我的控制器名稱已經修復。
這些參數在config.php
:
$config['base_url'] = 'http://francescoruvolo.it/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
而且Nginx的看起來是正確轉發所有請求index.php
,其實我並不需要顯式地加載控制器時指定它。無論如何,這些線是對我的主機Nginx的配置的一部分:
location/{
try_files $uri $uri/ /index.php;
}
我不明白的是,我居然能夠獲得兩種不同類型的404頁。例如,如果我去http://francescoruvolo.it/nonexistent.php Nginx正確地爲我提供一個404頁面。同時,如果我沒有指定任何路徑或明確指定index.php
,我會得到一個404「well格式化」,這意味着來自CodeIgniter的index.php已經實際運行,但未能加載控制器。
我錯過了什麼?我還能檢查什麼?
https://stackoverflow.com/questions/12757211/codeigniters-default-controller-doesnt-load –
@RobertRocha謝謝,但是這並不能解決我的問題。他說他有一個空白頁面,而我從CodeIgniter獲得一個404頁面而不是Nginx,這意味着CodeIgniter可以正常工作。 – Zagorax
嘗試在routes.php中使用小寫'$ route ['default_controller'] =「pages/show」;' – user4419336