Kohana 2.3.4 (2.4) 中路由和“索引”控制器的问题
题
我有: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”并相应地编辑默认路由。