CodeIgniter,一个路由中的多个可能的段

时间:2011-08-31 23:54:43

标签: codeigniter routes

好的,也许这个标题有点令人困惑。我想做的是捕获任何信息,如果在第一个URI段落之后有任何信息,如果该段是特定的,并将其转发到另一个控制器。这是我的路线文件:

$route['default_controller'] = "main";
$route['404_override'] = '';
$route['testroute'] = "main";

所以,现在这样做,如果我到mydomain.com/testroute它会显示默认页面,它应该是。但是,我想要的是,如果我去mydomain.com/testroute/testmethod/,其中testmethod是主控制器中的一个方法,我希望它也可以转发它。所以基本上我希望它能够路由到主控制器,无论在testroute之后是否有更多的段,但是如果它们应该作为主控制器的方法调用传递。

2 个答案:

答案 0 :(得分:3)

只需捕获给定的参数并将其传递给控制器​​,例如像这样:

$route['testroute/(:any)'] = "main/$1";

(:any)实际上捕获了任何类型的字符串。还有其他选择器。有关此主题的更多信息,请访问here

编辑(回答你的评论):

如果您想要一个到主控制器的index()方法的通用路由,只需添加两个路由:

$route['testroute'] = "main";
$route['testroute/(:any)'] = "main/$1";

答案 1 :(得分:0)

呃,什么?这就是CodeIgniter控制器的工作方式。给我们看一些代码?什么不起作用?

您是否在.htaccess文件中配置了网址重写,因此您不需要网址中的/index.php/testroute

打开.htaccess,如果您尚未重写此代码,请尝试使用此代码:

RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

如果你没有配置重写,那么没有那个^它将无法工作,但你可以访问mydomain.com/path/to/ci/index.php/testroute/testmethod