在CodeIgniter中为(:any)

我试图让我的CodeIgniter应用程序与WordPress类似。

我希望能够制作这些类型的网址:

http://www.example.com/my-post-example

http://www.example.com/new-headline-here

http://www.example.com/i-love-stackoverflow

我的路由:

$route['(:any)'] = "core/index/$1";

这将调用我的核心控制器并将页面名称传递给索引函数。

然后,我查找我的数据库中的页面名称并将该页面显示给用户。 到现在为止还挺好。

但是,有时我会打电话给另一个控制器。 例如:

http://www.example.com/admin/edit_page/3

http://www.example.com/admin/settings

现在我假设我的路线只是抓住所有这些规则并将它们发送到我的核心控制器。 有没有办法为特定页面设置例外? 或者是在我的Core控制器内执行此检查是一个好主意。

例如,

if ($page not in DB) {
   // Call controller/method
}

这似乎有点多余,因为我只是想让CodeIgniter来处理这个问题。


您使用它的路由规则可以满足您的需求。

如果您使用http://www.example.com/admin/edit_page/3此链接,它会向您发送admin控制器和edit_page方法。它不会使用路由any规则。

但是,如果你的链接看起来像这样,你会遇到一个问题

http://www.example.com/my-post-example/test

它会尝试去my-post-example控制器和测试方法。

http://www.example.com/admin再次使用路由的any规则,意味着它将重定向到核心控制器而不是admin/index 。 在这种情况下,您的网址应该是http://www.example.com/admin/index

最后,如果您使用控制器/方法名称调用其他链接,则使用any规则都可以

链接地址: http://www.djcxy.com/p/96331.html

上一篇: Routing in CodeIgniter for (:any)

下一篇: Rails not loading mountable engine's js