我目前在我的CodeIgniter路由文件中有这个。
它会将URI api/controller/function
映射到controller/api_function
。
$route['api/(:any)/(:any)/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4/$5/$6';
$route['api/(:any)/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4/$5';
$route['api/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4';
$route['api/(:any)/(:any)/(:any)'] = '$1/api_$2/$3';
$route['api/(:any)/(:any)'] = '$1/api_$2';
如您所见,这不是很有效。我需要一个不同的路线,具体取决于提供的参数数量。有没有办法自动传递所有参数?所以假设,我正在寻找类似......
的东西 $route['api/(:any)/(:any)/unlimited parameters'] = '$1/api_$2/unlimited parameters';
谢谢!
答案 0 :(得分:8)
试试这个:
$route['api/([^/]*)/([^/]*)/(.*)'] = '$1/api_$2/$3';
它基本上检查两个段(任何字符,但是斜杠),然后将任何内容作为参数附加到控制器函数。
这与具有 NO 参数的路线不匹配,但如果您需要处理这种情况,则不难做到。
答案 1 :(得分:0)
我相信这样做:
$route['api/(:any)/(:any)'] = '$1/api_$2';
$route['api/(:any)/(:any)/(:any)'] = '$1/api_$2/$3';
答案 2 :(得分:0)
这完美无缺,
$route['api/(.*)']='api/$1';