Codeigniter - CMS 的最佳路由配置?

标签 codeigniter content-management-system routing

我想在 Codeigniter 中创建一个自定义 CMS,我需要一种机制将一般页面路由到默认 Controller - 例如:

mydomain.com/about
mydomain.com/services/maintenance

这些将通过我的页面处理程序 Controller 进行路由。 Codeigniter 中的默认路由行为当然是路由到匹配的 Controller 和方法,因此对于上面的示例,它需要一个关于 Controller 和一个服务 Controller 。这显然不是一种实用甚至不明智的方法。

我在 routes.php 中看到了以下解决方案:

$route['^(?!admin|products).*'] = "pagehandler/$0";

但我认为这会带来自身的问题。例如,它只是在请求 uri 中查找“产品”,如果找到了到产品 Controller 的路由——但是如果我们将服务/产品作为 CMS 页面呢?这不会被路由到产品 Controller 吗?

有没有完美的方法来解决这个问题?我不希望所有 CMS 内容都以 Controller 名称为前缀的路由,但我还需要能够通用地覆盖其他 Controller 的路由。

最佳答案

如果您使用 CodeIgniter 2.0(已经足够稳定可以使用数月),那么您可以使用:

$route['404_override'] = 'pages';

这会将任何不是 Controller 、方法或有效路由的内容发送到您的页面 Controller 。然后您可以使用任何您喜欢的 PHP 来显示页面或显示更好的 404 页面。

阅读我的指南,解释您如何 upgrade to CodeIgniter 2.0 .此外,您可能有兴趣使用现有的 CMS,例如 PyroCMS现在已经接近最终的 v1.0 并且拥有大量的追随者。

关于Codeigniter - CMS 的最佳路由配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3725050/

相关文章:

mysql - 将 mysql 查询转换为 codeigniter 事件记录

PHP在godaddy共享服务器上创建数据库

c# - 垃圾收集器行为

mysql - 如何在我的文本中编写包含不需要空格的查询?

angularjs - Angular 1.5 路由示例

angularjs - AngularJS 路由是否提供对 "breadcrumb views"的支持?

php - 如何每 30 天使用触发器更新一次表?

php - 无法在 codeigniter 下的 View 中打印数据库中的值

youtube - 获取当前用户的 YouTube 内容所有者 ID

mongodb - 在 Golang 和 MongoDB 中将路由拆分为单独的包