使用路由和“索引”控制器在Kohana 2.3.4(2.4)中发布

时间:2009-11-25 22:17:33

标签: php apache2 kohana

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

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

我已经调试并发现$ _SERVER ['PATH_INFO']不正确。它省略了URI中的第一个'索引',所以我可以通过转到'index / index / index'来获得'index / index'。这就是我想解决的问题。

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

2 个答案:

答案 0 :(得分:0)

我猜它实际上发生在你的.htaccess文件或Apache配置中,而不是Kohana。首先,确保将Kohana附带的example.htaccess文件重命名为.htaccess,并且您可能必须重新启动Apache。

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

RewriteBase /kohana/

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

RewriteBase /

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

你在Debian服务器上安装的Apache是​​否真的有mod_rewrite?确认这一点会很好。 Here's one way to do that

进一步诊断以查看它是Kohana还是Apache的错误包括在路径的index.php部分中添加。在您的情况下,请尝试http://localhost/kohana/index.php/index。最后,我必须同意上面的sarfraz,命名你的控制器“索引”只是乞求麻烦。我自己的惯例是将其称为“主页”并相应地编辑默认路线。

答案 1 :(得分:0)

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

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