我的任务是用大型预先存在的链接目录重写现有网站。为了论证的缘故,让我们假设我们不能做任何会改变链接目录的事情。以下是我们正在使用的链接结构的一些示例:
项目页面将是:
www.domain.com/widgets/some-totally-awesome-large-purple-widget
类别子页面页面将是:
www.domain.com/widgets/purple-widgets
类别父页面页面将是:
www.domain.com/widgets/
自定义页面可能是:
www.domain.com/some-random-page
各种页面类型太多,无法为其编写单独的路由器。
使用 Router::connect 我可以很容易地使用类似的东西来解释第一个和第二个场景:
Router::connect('/{:pageroot}/{:pagekey}', 'Pages::index');
反过来,Pages::index 方法在我们的数据库中查找具有“/widgets/purple-widgets”“键”的条目。
但是,对于第三个和第四个页面,框架默认使用 '/{:controller}/{:action}/{:args}' 路由。我知道这是框架的正确行为。此外,最佳实践会声明我应该编写网站以匹配这种行为。但是,这不是这里的选择。
我需要的是一个路由器,它允许第三个和第四个示例与第一个示例功能相同。所有示例都应发送到 Pages::index 控制器,该控制器又使用 URL 路径作为键来查询数据库。