我相信我知道该怎么做,但想与我的社区友人验证。 =)
这是一个例子:
我有一个名为“ 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>)))'
);
我尚未使用过的功能,但看起来功能强大。