重写规则以简化REST api的编码器url


Rewrite rule to simplify codeigniter url for REST api

我正在使用https://github.com/chriskacerguis/codeigniter-restserver REST控制器库在codeigniter中编写REST api。我已经在application/controllers/api/v1中编写了我的控制器,并覆盖了Router类,以允许控制器内的多个子文件夹。

现在我想访问服务http://api.domain.com/v1/user/11而不是http://api.domain.com/api/v1/user/11

我已经尝试遵循htaccess规则

RewriteCond %{HTTP_HOST} ^api'.domain'.com$
RewriteCond %{REQUEST_URI} !index.php/
RewriteRule ^(.*)/?$ /index.php/api/$1 [QSA,L]

但它似乎不工作,因为$_SERVER全局变量中的REQUEST_URI被设置为v1/user/11而不是api/v1/user/11,因此编码器无法找到控制器。

除了在index.php中设置改变REQUEST_URI之外,是否有一种方法可以实现需求?

我不想做永久重定向。

下面的路由规则应该会有所帮助:

$route['v1/(:any)/(:any)'] = 'api/v1/$1/$2';

如果v1将来应该像v1, v2一样改变,那么下面类似的东西将会有所帮助:

$route['v(:num)/(:any)/(:any)'] = 'api/v$1/$2/$3';