【问题标题】:CodeIgniter custom routes broken (possibly PHP 5.4 issue)CodeIgniter 自定义路由损坏(可能是 PHP 5.4 问题)
【发布时间】:2012-12-10 20:50:58
【问题描述】:

好的,我的应用程序已经运行好几个月了。从今天早上开始,我所有的自定义路线都不再有效。

在名为“mL”的文件夹中有一个名为“stuff”的控制器。设置自定义路由:

$route['default_controller'] = "mL/stuff";

然后访问“website.com/”,工作正常,将我带到“控制器/mL/stuff”控制器。现在,如果我尝试使用自定义路线:

$route['stuff'] = "mL/stuff";

然后访问 'website.com/stuff' 我会被发送到我的 404 页面(在 $route['404_override'] 中设置)。

这对我所有的控制器都是如此,如果我将它设置为 default_controller 它可以正常工作。周末有人将服务器升级到 php 5.4.9,这是我能想到的唯一可能会影响这一点的事情,但我不知道如何/为什么。

【问题讨论】:

  • 你在使用任何 htaccess 吗?

标签: php codeigniter routing controller


【解决方案1】:

我不认为 php 升级本身会做到这一点,但其他东西肯定有修补。

我唯一能想到的是 htaccess 或 apache 配置/设置已更改 - 结果可能是您的全部或部分 htaccess 不再工作(例如不再启用 mod_rewite)

尝试恢复配置中的 index.php 和 url 以查看页面是否加载?

你能检查一下是否启用了 mod-rewrite。检查 httpd.conf 是否为您的目录设置为 allowOverride ALL 并且 mod_rewrite 行没有被注释掉。

在此处查看完整详情:http://www.tildemark.com/enable-htaccess-on-apache/

以后如果没坏就不要更新了!

【讨论】:

  • 它实际上是 .htaccess 文件。奇怪的是,它已经几个月没有改变了。我将 RewriteRule ^(.*)$ /mL/$1 [L] 更改为 RewriteRule ^(.*)$ /mL/index.php/$1 [L] 它在 php 5.4 中工作
【解决方案2】:

同样的事情发生在我身上,无法弄清楚,但我回滚到 php 5.3.x,它会再次工作,直到我们从 codeigniter 团队获得适当的更新,但最后一次更新如下所示

我非常怀疑这是与 PHP 相关的。我猜另一个 Apache 的版本(和 mod_rewrite)与 PHP 5.4 一起使用,我会看 进入 httpd.conf 和/或 .htaccess

通过 narfbg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    相关资源
    最近更新 更多