如何使用CakePHP创建像www.example.com/x22bh1这样的动态网址

时间:2014-07-10 14:25:24

标签: cakephp

我的CakePHP路由器设置如下 -

Router::connect('/*', array('controller' => 'posts', 'action' => 'p'));

这会导致动态网址 www.example.com/x22bh1 被路由到 www.example.com/posts/p/x22bh1

然而,我喜欢 www.example.com/aboutus www.example.com/register 等的其他网址也会被发送到 www.example。 com / posts / p / * 这是一种意外行为。现在解决这个问题,我可以定义一个基于正则表达式的路由器。但为了实现这一点,我需要指定所有我不想被路由的异常页面。那么有没有一种方法可以使这两个功能无需在路由器中逐一指定所有异常页面?就像是有一个控制器和URL的动作,然后不路由,但如果没有,那么转到默认的控制器/动作?

www.example.com/x22bh1 =>未找到控制器x22bh1,请转到 www.example.com/posts/p/x22bh1

www.example.com/register =>已找到操作register的控制器index,请转到默认页面 www.example.com/register/index

1 个答案:

答案 0 :(得分:0)

Router::connect('/register',array('controller'=>'register','action'=>'index'));  
Router::connect('/aboutus',array('controller'=>'aboutus','action' =>'index')); 
# Blind rule  
Router::connect('/*', array('controller' => 'posts', 'action' => 'p'));

所有其他路线必须高于此盲目规则,否则所有网址都将在帖子控制器的p动作中解析。除了定义的路线之外的所有网址将在帖子控制器的p动作中解决,序列将如我前面所说的那样重要...