0

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

当我输入http://localhost/kohana/index/index 之类的地址时,我希望控制器'index',动作'index'被执行。它适用于 Windows localhost,适用于共享主机。但不在我的 Debian 服务器上。

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

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

4

2 回答 2

0

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

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

RewriteBase /kohana/

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

RewriteBase /

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

你在 Debian 服务器上安装的 Apache 实际上有 mod_rewrite 吗?最好确认一下。这是一种方法

进一步诊断是否是 Kohana 或 Apache 的故障包括添加回路径的 index.php 部分。在您的情况下,请尝试http://localhost/kohana/index.php/index。最后,我必须同意上述 sarfraz 的观点,即将控制器命名为“索引”只是在自找麻烦。我自己的约定是将其称为“家”并相应地编辑默认路线。

于 2009-12-03T20:14:56.023 回答
0

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

因此,遇到此问题的任何人,只需禁用 mod_negotiation 并玩得开心

于 2009-12-05T21:18:04.553 回答