【问题标题】:CodeIgniter doesn't load default controller on '/'CodeIgniter 不会在“/”上加载默认控制器
【发布时间】: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/showhttp://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


【解决方案1】:

解决了。显然,我在默认路由的末尾多了一个(不需要的)/

这是错误的:

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

这是正确的:

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

不过,我还是不太明白为什么。事实上,如果我显式加载控制器,它甚至可以使用额外的斜线。

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

【讨论】:

  • “如果有人解释这一点,我很乐意接受他的回答。:)” 他们在docs 中非常具体:“重要提示:不要使用前导/尾随斜杠。” :) 另外,根据文档,默认路由应该放在最前面。
  • @Tpojka 这一定是 3.X 版中的新内容,因为我在升级之前有同样的路线,而且它一直都能完美运行。感谢您的输入! :)
猜你喜欢
  • 2014-02-17
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 2015-03-13
相关资源
最近更新 更多