gpt4 book ai didi

php - CodeIgniter 不会在 '/' 上加载默认 Controller

转载 作者:可可西里 更新时间:2023-11-01 00:55:51 25 4
gpt4 key购买 nike

我将 CodeIgniter 与 Nginx 结合使用。我刚刚从 CodeIgniter 2.2.6 升级到 3.1.4,遵循所有变更日志和升级说明。一切正常,但默认 Controller ,即 http://francescoruvolo.it (甚至 http://francescoruvolo.it/index.php )显示 404 页面,但所有其他路由规则都有效,我能够加载其他 Controller 。

这是我的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 , Controller 加载得很好并且可以正常工作。许多人遇到了类似的问题,因为他们错过了关于为类强制使用大写名称的部分,但情况并非如此,因为我的 Controller 名称已经固定。

这些是 config.php 中的参数:

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

而且 Nginx 看起来它正在将所有请求正确转发到 index.php,实际上我不需要在显式加载 Controller 时指定它。无论如何,这些行是我的主机 Nginx 配置的一部分:

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

我不明白的是,我实际上能够获得两种不同类型的 404 页面。例如,如果我转到 http://francescoruvolo.it/nonexistent.php Nginx 正确地为我提供了一个 404 页面。同时,如果我没有指定任何路径或明确指定 index.php 我会得到一个 404 “well formatted”,这意味着来自 CodeIgniter 的 index.php 已经实际运行,但它无法加载 Controller 。

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

最佳答案

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

这是错误的:

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

这是正确的:

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

不过,我不太明白为什么。事实上,如果我显式加载 Controller ,它甚至可以使用额外的斜杠。

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

关于php - CodeIgniter 不会在 '/' 上加载默认 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44243021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com