我相信我知道该怎么做,但想与我的社区友人验证。 =)

这是一个例子:

我有一个名为“ tami”的Controller类,带有一个动作“ index”。

我知道,如果我希望有人通过除“ / tami /”或“ / tami / index”以外的URL访问该控制器/操作组合,那么我应该通过以下方式添加一条路由:

Route::set('pretty_tami', 'these-are-my-initials(/<action>)')
    ->defaults(array(
        'controller' => 'tami',
        'action' => 'index',
    ));


但是,用户仍然可以通过/tami/访问此页面。

如何关闭默认路由,以便唯一有效的路由是我定义的路由?

我假设我可以删除kohana/application/bootstrap.php中的默认路由。那是对的吗?还是会破坏其他东西?

最佳答案

我想说的与@simshaun完全一样-删除默认路由(使其他控制器无法访问),或者在before()中的Controller_Tami函数中查找uri,以查看它是否在追随您。

如果您正在使用Kohana 3.1,请you can now use lambda logic/anonymous functions to define your routes

这样的事情会使多余的路由逻辑脱离控制器(这很好,因为我们将其保留在一个位置):

Route::set('default', function($uri)
    {
        if ($uri == 'tami' OR $uri == 'tami/index')
        {
            // Route not allowed by the default methods
            throw new Kohana_404_Exception("Route not permitted");
        }
    },
    '(<controller>(/<action>(/<id>)))'
);


我尚未使用过的功能,但看起来功能强大。

08-08 05:10