我最近开始使用kohana 3.3.1框架并遇到了一些问题。
我想为不同的入口点创建不同的路线。现在,这是默认路由,似乎工作正常(我认为):
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'welcome',
'action' => 'index',
));
当我访问该网站时,它会显示“你好,世界!”。
我有一个名为Street的控制器,位于application / classes / Controller / Street.php。
此控制器的代码是:
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Street extends Controller {
public function action_index()
{
$this->response->body('hello, street!');
}
问题是,我想在URI后面输入/的东西,它应该重定向到定义的控制器和动作。但它似乎没有用。当我在默认URI后面输入ANYTHING时,我收到404错误。
对于路线,我使用此
/**
* Set the routes. Each route must have a minimum of a name, a URI and a set of
* defaults for the URI.
*/
Route::set('test1', 'street/<id>')
->defaults(array(
'controller' => 'street',
'action' => 'index',
));
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'welcome',
'action' => 'index',
));
任何帮助都会很高兴。
修改
我刚试过@Darsstar的指令去了/index.php/street,它运作了! 但现在,当我尝试去/index.php/street/derp时,我收到一条错误说
在此服务器上找不到请求的URL derp。
所以它还没有正常工作我猜
答案 0 :(得分:3)
由于/index.php/street
版本有效,如果您还没有,请阅读Clean URLs tutorial。如果有,请仔细检查一切!
如果您只有这两条路线,那么/index.php/street/derp
应该与路线'test1'匹配。
错误消息'在此服务器上找不到请求的URL derp。'说你去/index.php/derp
,而不是index.php/street/derp
。哪个匹配默认路由并被调度到Controller_Derp :: action_index(),但它不存在,所以Request_Internal :: execute()抛出HTTP_Exception_404。
默认路线更多的是示例。这是一个discussion on Kohana's issue tracker删除它,因为一个catchall默认路由是一个坏习惯。路线应该是具体的。我建议删除它。
如果您认为拥有一条捕获路线是捕获所有404请求的好方法,请让Custom Error Pages tutorial证明您错了。