我正在尝试使用bootstrap.php中的以下条目路由网址http://host/order?servertype=1&plan=1
Route::set('order', 'order(/<action>)?servertype=<id1>&plan=<id2>', array('id1'=>'[0-9]+','id2'=>'[0-9]+'))
->defaults(array(
'controller' => 'order',
'action' => 'index',
));
我收到错误:无法找到匹配URI的路由。我做错了什么?
答案 0 :(得分:2)
Kohana的路由系统不适用于查询字符串(我相信大多数框架也是如此)。如果你真的需要以这种方式操作查询字符串,那么你将不得不使用mod_rewrite将逻辑从Kohana移出到.htaccess文件中。
但是,执行路由的首选方法是使用分层(路径样式)URL结构,然后将查询字符串用于任何无法以层次方式表示的信息(然后可以通过{{直接从控制器访问) 1}})。
这意味着使用类似$_GET
的网址结构和路由方案,如:
http://host/order/<id1>/<id2>
但是,在使用这种类型的URL结构时,最好在URL中使用比普通数字ID更多的描述性标记。因此,您可以考虑使用"slugs"来识别您的服务器类型和计划类型,从而为您提供更具可读性和SEO友好性的网址,例如Route::set('order', 'order(/<action>)/<id1>/<id2>', array('id1'=>'[0-9]+','id2'=>'[0-9]+'))
->defaults(array(
'controller' => 'order',
'action' => 'index',
));
。