【问题标题】:How to create dynamic urls like www.example.com/x22bh1 using CakePHP如何使用 CakePHP 创建像 www.example.com/x22bh1 这样的动态 url
【发布时间】:2014-08-31 23:34:38
【问题描述】:

我的 CakePHP 路由器是这样设置的-

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

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

但是,我的其他网址(例如 www.example.com/aboutuswww.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

【问题讨论】:

标签: cakephp


【解决方案1】:
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'));

所有其他路由都必须在这条盲规之上,否则所有 url 都将在 post 控制器的 p 动作中解析。意味着除了定义的路由之外,所有 url 都将在 post 控制器的 p 动作中解析,并且序列将很重要,正如我之前所说的......

【讨论】:

  • @Anubhav-您没有很好地阅读我的问题。我想要的是一种不在路由器中一个一个地指定所有异常页面(例如('/register','/aboutus'))并使其全部正常工作的方法。
猜你喜欢
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 2011-06-21
  • 2012-04-10
  • 2017-10-28
  • 2012-07-30
相关资源
最近更新 更多