CodeIgniter不加载默认的控制器'/'

我使用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 ,控制器加载得很好,它的工作原理。 很多人也遇到过类似的问题,因为他们错过了为class级实施大写字母的部分,但事实并非如此,因为我的pipe制员的名字已经修好了。

这些是config.php中的参数:

 $config['base_url'] = 'http://francescoruvolo.it/'; $config['index_page'] = ''; $config['uri_protocol'] = 'REQUEST_URI'; 

而Nginx看起来好像正确地将所有请求转发到index.php ,实际上我不需要明确地加载控制器时指定它。 无论如何,这些行是主机的Nginxconfiguration的一部分:

 location / { try_files $uri $uri/ /index.php; } 

我没有得到的是,我实际上能够得到两个不同types的404页。 例如,如果我去http://francescoruvolo.it/nonexistent.php Nginx正确地为我提供了一个404页面。 同时,如果我没有指定任何path或明确指定index.php我得到一个404“格式良好”,这意味着从CodeIgniter的index.php已经被实际运行,但它没有加载控制器。

我错过了什么? 我还能检查什么?

解决了。 显然,我有一个额外的(不需要的) /在我的默认路线结束。

这是错误的:

 $route['default_controller'] = "Pages/show/"; 

这是对的:

 $route['default_controller'] = "Pages/show"; 

不过,我不明白为什么。 事实上,如果我明确地加载控制器,它甚至可以用额外的斜线工作。

如果有人解释这一点,我会很乐意接受他的答案。 🙂