如何从codeigniter中的url中删除controller_name和function_name

时间:2013-11-12 14:00:25

标签: codeigniter mod-rewrite routes

我有一个像

这样的网址结构
http://example.com/merchant/index/1-westside

目前我在routes.php中添加了一行,如

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

通过使用这条路线我会得到像

这样的网址
http://example.com/merchant/1-westside

但我需要像

这样的网址
http://example.com/1-westside

简而言之,我想隐藏controller_name,即url中的“merchant”。请帮忙。

2 个答案:

答案 0 :(得分:0)

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

但请注意,这会影响对网站的所有请求,因此如果您想要使用其他控制器,则需要为它们创建路径并将它们放在此路线之前。

因此,例如,如果您创建另一个名为payments的控制器,则需要在此之前为其设置路径:

$route['payments/(:any)'] = 'payments/index/$1';
$route['(:any)'] = 'merchant/index/$1';

这将无法正常工作:

$route['(:any)'] = 'merchant/index/$1';
$route['payments/(:any)'] = 'payments/index/$1';

此外,您只能为一个控制器执行此操作。即你只能拥有一个使用“无控制器”网址的控制器和方法。如果要使用除merchant/index之外的其他控制器方法,则必须使用路由URL中的控制器名称(或某些标识符)来了解所需内容。

答案 1 :(得分:0)

尝试设置$route['default_controller'] = 'merchant';

相关问题