我尝试为网页控制器创建搜索引擎友好的网址,即/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()
。
必须有一种方法可以在不为每个页面制定特定路线的情况下实现此目的。如何创建一条路线或一组路线:
/
而不是/pages
。Router::connect()
和Html->link()
我已查看CakePHP Book中的示例,并查看了其他问题,例如CakePHP routing in pages controller。似乎没有什么能满足上述规范。
答案 0 :(得分:0)
您需要为联系方法调用创建第二个路由,并将其放在更通用的规则之前,以匹配“pages / pages”之后的所有内容[a-z]。在你的规则之前尝试:
Router::connect('/contact', array('controller' => 'pages', 'action' => 'contact'));
始终牢记路线的顺序很重要。规则越通用,它就越匹配。因此,在更通用的规则面前加入更具体的规则。