我使用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