CodeIgniter不会在' /'上加载默认控制器

时间:2017-05-29 12:53:33

标签: php codeigniter nginx url-routing

我正在使用CodeIgniter和Nginx。 我刚刚从CodeIgniter 2.2.6升级到3.1.4,遵循所有更改日志和升级说明。一切都很完美,但默认控制器,即http://francescoruvolo.it(甚至http://francescoruvolo.it/index.php)显示404页面,但所有其他路由规则都有效,我可以加载其他控制器。

这是我的<xsl:value-of select="@value"/>

routes.php

我还试图评论所有路线,但仍然会忽略默认路线。不过,如果我去http://francescoruvolo.it/Pages/showhttp://francescoruvolo.it/en,控制器加载得很好并且可以正常工作。很多人都有类似的问题,因为他们错过了强制执行课程大写名称的部分,但事实并非如此,因为我的控制器&#39;名称已经修复。

这些是$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; 中的参数:

config.php

并且Nginx看起来正确地将所有请求转发到$config['base_url'] = 'http://francescoruvolo.it/'; $config['index_page'] = ''; $config['uri_protocol'] = 'REQUEST_URI'; ,实际上我并不需要在明确加载控制器时指定它。无论如何,这些行是我主机的Nginx配置的一部分:

index.php

我不能得到的是,我实际上能够获得两种不同类型的404页面。例如,如果我转到http://francescoruvolo.it/nonexistent.php Nginx正确地为我提供了404页面。同时,如果我没有指定任何路径或明确指定location / { try_files $uri $uri/ /index.php; } ,我得到一个404&#34;格式良好的&#34;,这意味着CodeIgniter的index.php实际上已经运行了,但它无法加载控制器。

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

1 个答案:

答案 0 :(得分:4)

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

这是错误的:

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

这是正确的:

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

尽管如此,我还是不明白为什么。事实上,如果我明确加载控制器,它甚至可以使用额外的斜杠。

如果有人解释这一点,我很乐意接受他的回答。 :)