【发布时间】:2011-11-11 23:26:42
【问题描述】:
尝试学习 Kohana,来自 Asp.Net MVC 3。在 MVC 中,我习惯了默认路由(非常类似于 Kohana 中的默认路由)的工作方式:
默认路由匹配以下任何一个:
/
/Home
/Home/Index
我希望它在 Kohana 中是一样的,但似乎它匹配的只是这个:
/
这是我在 bootstrap.php 中的设置:
Kohana::init(array(
'base_url' => '/kohana',
'index_file' => FALSE
));
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
));
因此,如果我在地址栏中输入 localhost/kohana,我会看到控制器 home 和操作索引 (action_index) 调用的视图。但是,如果我输入 localhost/kohana/home/index,我会收到一条错误消息,指出该对象不存在。
这是为什么?我不应该能够在 url 中输入控制器和操作并获得正确的路由吗?所以基本上我不知道如何输入 URL 以获取操作方法...
对不起,如果这是一个愚蠢的新手问题,但我无法弄清楚谷歌搜索并查看 Kohana 文档......我有点被 Asp.Net MVC 路由总是正常工作的事实所宠坏,所以我从来不需要真正了解它......
【问题讨论】:
-
默认情况下你的路由应该是匹配的,所以很难说哪里出了问题。你还有其他路由规则吗?
-
不,我没有定义任何其他路由,除了将默认控制器更改为 home 而不是 welcome,正如您在示例中看到的那样。没有添加其他路线......就像我说的,localhost/kohana 有效,但不是 localhost/kohana/home/index
-
您是否使用 RewriteBase /kohana/ 修改了 .htaccess?
-
不,我现在试过了,但我从未使用过 .htaccess。但我的被称为example.htaccess,不知道这是否重要?无论如何它没有帮助......我的base_url错了吗? (见上文)我的应用程序结构是 c:\xampp\htdocs\kohana\ ,下面显然是应用程序文件夹等......
-
然后检查我的答案,它应该可以解决问题