如何在CodeIgniter中实现此URI方案?

时间:2011-06-24 17:16:46

标签: php codeigniter

我正在使用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方案呢?

4 个答案:

答案 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)

另一个选择是在路线中声明所有静态控制器......