我有:Kohana 2.3.4 的全新干净副本(也尝试过 2.4 RC1),是带有 Apache 2.2.9 的 Debian 上名为“index”的控制器。

当我输入地址时 http://localhost/kohana/index/index 我希望执行控制器“index”、操作“index”。它适用于 Windows 本地主机,适用于共享主机。但在我的 Debian 服务器上却没有。

我调试后发现 $_SERVER['PATH_INFO'] 不正确。它省略了 URI 中的第一个“索引”,因此我可以通过“索引/索引/索引”来访问“索引/索引”。这就是我想要解决的问题。

有谁知道如何解决这个问题?

有帮助吗?

解决方案 2

原来是mod_negotitaion。该死的mod将我的/ index / index重写为/index.php/index,因为它认为我错过了.php

所以遇到这个问题的人,只需禁用mod_negotiation并享受愉快的时光

其他提示

我猜它实际上发生在您的 .htaccess 文件或 Apache 配置中,而不是专门出现在 Kohana 中。首先,确保Kohana自带的example.htaccess文件重命名为.htaccess,并且可能需要重新启动Apache。

如果您使用 .htaccess 隐藏路径的 index.php 部分,请检查 RewriteBase 设置是什么:

RewriteBase /kohana/

如果您将其安装在 Web 服务器的根目录中(如在生产中,或使用本地主机的单独端口),则应将其更改为:

RewriteBase /

顺便说一句,这是我个人在设置新站点和开发环境时最常见的错误。CodeIgniter 和其他相关 PHP 框架也是如此。

您在 Debian 服务器上安装的 Apache 实际上有 mod_rewrite 吗?如果能确认这一点就好了。 这是一种方法.

进一步诊断以确定这是 Kohana 还是 Apache 的错误,包括添加回路径的 index.php 部分。对于你的情况,尝试 http://localhost/kohana/index.php/index. 。最后,我必须同意上面 sarfraz 的观点,将控制器命名为“index”只是自找麻烦。我自己的惯例是称其为“home”并相应地编辑默认路由。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top