在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
规则都可以