【发布时间】:2011-09-17 07:02:02
【问题描述】:
我正在尝试为页面控制器创建搜索引擎友好的 URL,即 /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()。
必须有一种方法可以在不为每个页面指定特定路径的情况下完成此操作。如何创建一条或一组路线:
- 模仿默认路由行为 页面控制器。那是路线 显示(),除非一个动作/方法 对存在。
- 通过搜索引擎友好的 URL 来实现。这是来自根
/而不是/pages。 - 同时演示
Router::connect()和Html->link()
我查看了CakePHP Book 中的示例并查看了其他问题,例如CakePHP routing in pages controller。似乎没有什么能满足上述规范。
【问题讨论】:
-
/*?除了 PagesController 之外,您还在应用程序中使用其他控制器吗? -
那么,如果
/xyz应该调用XYZController->index()而不是PagesController->xyz(),cake 怎么知道?这就是为什么您必须明确列出页面的原因,不是吗? -
@webbiedave,我知道你要去哪里了。但是必须有某种方法来完成我上面概述的路线。显然我是说
/*不是答案。
标签: php cakephp url-routing