我正在使用CodeIgniter创建一个博客站点,我想将第一个URI段用作动态类别。
所有这些URI都是: http://example.com/category1/some-post http://example.com/category2/some-post http://example.com/category3/some-post
所有人都会转到“类别”控制器,在那里可以从数据库中找到类别。
我可以使用$routes['(:any)'] = 'categories';
轻松实现这一点,但当然所有其他静态控制器都无法正常工作,例如admin,user等。
那么如何在不允许其他静态页面路由的情况下实现此URI方案呢?
答案 0 :(得分:0)
除非您手动为每个类别创建特定路线,否则无法使用。
例如:
$route['php'] = 'categories';
$route['java'] = 'categories';
答案 1 :(得分:0)
如果你看一下wordpress,他们会用/category/
开始分类,而所有的页面都是其他的,所以你应该这样做。
答案 2 :(得分:0)
正如弗朗索瓦所说,你将为每个类别创建一条路线。使用如下的简单数组可以略微简化:
$categories = array('cat1','cat2','etc...');
foreach($categories as $cat)
{
$routes["$cat/(:any)"] = "category/$cat/\$1"
}
可能的替代方法是使用预控制器挂钩,您可以在其中查询数据库以查看该段是否为类别,然后相应地指示请求。
如果您有很多类别,或者它们会被频繁添加和更新,我建议使用第二个选项,否则,维护一个简单的数组并不算太糟糕。
答案 3 :(得分:0)
另一个选择是在路线中声明所有静态控制器......