Php 重写规则以简化RESTAPI的codeigniter url

Php 重写规则以简化RESTAPI的codeigniter url,php,.htaccess,api,codeigniter,rest,Php,.htaccess,Api,Codeigniter,Rest,我正在使用REST控制器库在codeigniter中编写RESTAPI。我已经在应用程序/controllers/api/v1中编写了我的控制器,并重写了Router类以允许控制器中有多个子文件夹 现在,我想访问以下服务: 而不是 我已尝试遵循htaccess规则 RewriteCond %{HTTP_HOST} ^api\.domain\.com$ RewriteCond %{REQUEST_URI} !index.php/ RewriteRule ^(.*)/?$ /index.php/a

我正在使用REST控制器库在codeigniter中编写RESTAPI。我已经在
应用程序/controllers/api/v1
中编写了我的控制器,并重写了Router类以允许控制器中有多个子文件夹

现在,我想访问以下服务: 而不是

我已尝试遵循htaccess规则

RewriteCond %{HTTP_HOST} ^api\.domain\.com$
RewriteCond %{REQUEST_URI} !index.php/
RewriteRule ^(.*)/?$ /index.php/api/$1 [QSA,L]
但它似乎不起作用,因为$\u服务器全局变量中的请求URI被设置为
v1/user/11
,而不是
api/v1/user/11
,因此codeigniter无法找到控制器

除了在index.php中设置变更请求_URI之外,还有其他方法可以实现该要求吗

我不想做永久重定向


非常感谢您的帮助。

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

$route['v1/(:any)/(:any)'] = 'api/v1/$1/$2';
如果将来v1应该像v1、v2一样变化,那么类似于下面的内容将有所帮助:

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