我在Nginx中使用CodeIgniter.
按照所有变更日志和升级说明,我刚刚从CodeIgniter 2.2.6升级到3.1.4.一切运行正常,但默认控制器(即http://francescoruvolo.it(甚至http://francescoruvolo.it/index.php))显示404页面,但所有其他路由规则均正常工作,并且我能够加载其他控制器.
这是我的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“格式正确”,这意味着CodeIgniter的index.PHP已实际运行,但无法加载控制器.
我想念什么?我还能检查什么?
最佳答案