【发布时间】:2013-12-13 08:08:24
【问题描述】:
场景
我有一个网站,我正在升级到 CodeIgniter 3 的当前开发版本。我已按照升级说明将所有类文件重命名为大写(例如 application/controllers/Home.php)
预期结果
对于小写 URL 可以正常使用控制器,例如:
使用 Home.php 控制器。
我得到了什么
当 url 的首字母为小写时,不会自动调用大写文件名。 (404 错误)。
我试过了
- 在 URL 中键入控制器的首字母大写, IE。 http://examplesite.com/Home/ 这将产生控制器为 预计。
- 将 routes.php 中的默认控制器大写,从而生成 页面符合预期。但是,如果这意味着我必须更改所有 URL 包含带有大写首字母的控制器,这更少 远超理想。
注意事项
- 该网站在 PHP 5.3.17 FastCGI 上运行。
- index.php 已从 URL 中删除,其 .htaccess 规则为:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
非常感谢任何帮助。
编辑 1
我已将其范围缩小到核心路由器中的 _validate_request 函数。如果我从_set_request 注释掉对该函数的调用,它将起作用。
编辑 2
如果我将 _validate_request 函数的名称更改为 _validate_request2 并使用新名称调用它,它会完美运行。这个函数名是保留字吗?
【问题讨论】:
-
对我来说很好。您是否从 system/ 目录中复制了所有内容?
-
是的。我昨天下载了最新开发的 zip,并重新上传了几次系统以确保我不会发疯。是否有其他文件调用该函数?
-
不,你有没有 application/core/MY_Router.php 文件?或者任何自定义路线?
-
啊,是的,我愿意。它正在覆盖该功能。非常感谢。
-
(该网站已有 2 年历史,我完全忘记了为什么要覆盖它)。