在CakePHP中为PagesController路由搜索引擎友好的URL

时间:2011-06-17 15:16:25

标签: php cakephp url-routing

我尝试为网页控制器创建搜索引擎友好的网址,即/about而不是/pages/about

我尝试过设置以下路线(在routes.php的底部):

Router::connect('/*', array('controller' => 'pages', 'action' => 'display'));

Router::connect('/:page', array('controller' => 'pages',
  'action' => 'display'), array('pass' => array('page'), 'page' => '[a-z]+'));

两者都匹配/about/support等。但是,当我有一个动作/方法对时失败了。例如,/contact应该路由到PagesController->contact()。但是,上面将其路由到PagesController->display()

必须有一种方法可以在不为每个页面制定特定路线的情况下实现此目的。如何创建一条路线或一组路线:

  • 模仿默认路由行为 PagesController。那是路线 除非动作/方法,否则显示() 对存在。
  • 使用搜索引擎友好的URL这样做。这是来自根/而不是/pages
  • 演示Router::connect()Html->link()

我已查看CakePHP Book中的示例,并查看了其他问题,例如CakePHP routing in pages controller。似乎没有什么能满足上述规范。

1 个答案:

答案 0 :(得分:0)

您需要为联系方法调用创建第二个路由,并将其放在更通用的规则之前,以匹配“pages / pages”之后的所有内容[a-z]。在你的规则之前尝试:

Router::connect('/contact', array('controller' => 'pages', 'action' => 'contact'));

始终牢记路线的顺序很重要。规则越通用,它就越匹配。因此,在更通用的规则面前加入更具体的规则。