これは古い質問ですが、最近同じジレンマに直面し、この回答が役立つことがわかりました。
http://osvaldas.info/smart-database-driven-routing-in-codeigniter
すべてのルートを配置するテーブルを作成します
CREATE TABLE IF NOT EXISTS `app_routes` (
`id` bigint(20) NOT NULL auto_increment,
`slug` varchar(192) collate utf8_unicode_ci NOT NULL,
`controller` varchar(64) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `slug` (`slug`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
application/config/routes.php 内
//上の 2 つはルート内のオリジナルです
$route[ 'default_controller' ] = 'main';
$route[ '404_override' ] = 'error404';
//新しい版
require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->get( 'app_routes' );
$result = $query->result();
foreach( $result as $row )
{
$route[ $row->slug ] = $row->controller;
$route[ $row->slug.'/:any' ] = $row->controller;
$route[ $row->controller ] = 'error404';
$route[ $row->controller.'/:any' ] = 'error404';
}
例 私は INSERT INTO app_routes
( slug
, controller
) VALUES ('about', 'pages/about');で作業しました。
または、ルートを制御するために小さな cms を作成することもできます。これは、ウェブサイトの最後のビットに従って行ったことです。
id | slug | controller | actions
1 | about | pages/about | edit / delete