【发布时间】:2017-05-29 12:53:33
【问题描述】:
我正在使用带有 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已经实际运行,但是它无法加载控制器。
我错过了什么?我还能检查什么?
【问题讨论】:
-
@RobertRocha 谢谢,但这并不能解决我的问题。他说他得到了一个空白页面,而我从 CodeIgniter 得到一个 404 页面而不是从 Nginx 得到的,这意味着 CodeIgniter 工作正常。
-
在 routes.php 中尝试小写
$route['default_controller'] = "pages/show";
标签: php codeigniter nginx url-routing