加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

PHP-CodeIgniter不会在’/’上加载默认控制器

发布时间:2020-12-13 20:59:54 所属栏目:Nginx 来源:网络整理
导读:我在Nginx中使用CodeIgniter. 按照所有变更日志和升级说明,我刚刚从CodeIgniter 2.2.6升级到3.1.4.一切运行正常,但默认控制器(即http://francescoruvolo.it(甚至http://francescoruvolo.it/index.php))显示404页面,但所有其他路由规则均正常工作,并且我能够

我在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已实际运行,但无法加载控制器.

我想念什么?我还能检查什么?

最佳答案
解决了.显然,在默认路由的末尾有一个多余的(不需要的)/.

这是错误的:

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

这是对的:

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

不过,我不太明白为什么.实际上,如果我显式加载控制器,即使有额外的斜杠它也可以工作.

如果有人对此进行解释,我会很乐意接受他的回答.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读